Algorithm/JavaScript
-
[ 프로그래머스 Lv. 1] 약수의 개수와 덧셈Algorithm/JavaScript 2023. 11. 6. 15:28
[ 문제 설명 ]두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요. [ 제한 조건 ]1 ≤ left ≤ right ≤ 1,000[ 입출력 예 ]수약수약수의 개수131, 132141,2,7,144151,3,5,154161,2,4,8,165171,172따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.[ 문제 풀이 과정 ] 아래는 초기 오류가 났던 코드이다. 이중 for문을 사용해 left부터 right 까지의 각각의 약수의 수를 셀 수 있도록 짰지만 제대로 답이 나오지 않았다. function..
-
[프로그래머스 Lv. 1] 수박수박수박수박수박수?Algorithm/JavaScript 2023. 10. 31. 13:57
[ 문제 설명 ] 길이가 n이고, "수박수박수박수...."와 같은 패턴을 유지하는 문자열을 리턴하는 함수, solution을 완성하세요. 예를들어 n이 4이면 "수박수박"을 리턴하고 3이라면 "수박수"를 리턴하면 됩니다. [ 제한 조건 ]n은 길이 10,000이하인 자연수입니다. [ 입출력 예 ] nreturn3 "수박수" 4"수박수박" [ 문제 풀이 ] 1. Array(3).fill(0) : [0, 0, 0] - 사용해서 전체 글자 길이(n)만큼 배열안에 0 채우기 2. map 함수 사용해서 0을 수박수~ 글자로 바꾸기 ✔️ 각 인덱스를 2로 나눈 나머지 값은 0 또는 1 밖에 안나오는 점 이용! 3. join 함수로 , 로 나눠진 글자 합치기function solution(n) { const t..
-
[프로그래머스 Lv. 1] 가운데 글자 가져오기Algorithm/JavaScript 2023. 10. 28. 15:07
문제 설명 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. [ 제한 사항 ]s는 길이가 1 이상, 100이하인 스트링입니다.[ 입출력 예 ]sreturn "abcde" "c" "qwer" "we" 문제 풀이 - s의 length가 홀수이면 s의 인덱스가 s의 length / 2 한 값- s의 length가 짝수이면 s의 인덱스가 s의 length / 2 한 값 - 1 과 s의 length / 2 한 값을 더해야 한✔️ length / 2 한 몫이 소수이므로 소수점 버리기 함수인 Math.floor이 필요하다 function solution(s) { if(s.length % 2 != 0) return s[Ma..
-
[프로그래머스 Lv. 1] 핸드폰 번호 가리기Algorithm/JavaScript 2023. 10. 20. 19:05
[문제 설명] 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. [입출력 예] phone_number return "01033334444" "*******4444" "027778888" "*****8888" [풀이]- 1. 마지막 네자리 숫자 구하기=> slice 함수 이용(slice(시작인덱스, 종료인덱스))- 2. 뒷 4자리 제외한 나머지 숫자 '*'으로 바꿔주기 => repeat 함수 이용 (repeat(반복할 횟수))- 3. concat 함수 이용해 위 두개 합치기fu..
-
[프로그래머스 Lv. 1] 콜라츠 추측Algorithm/JavaScript 2023. 10. 20. 18:28
[문제 설명] 1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될 때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다.1-1. 입력된 수가 짝수라면 2로 나눕니다. 1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다. 2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다. 예를 들어, 주어진 수가 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야 하는지 반환하는 함수, solution을 완성해 주세요. 단, 주어진 수가 1인 경우에는 0을, 작업을 500번 반복할 때까지 1이 되지 않는다면 –1을 반환해 주세요. [입출력 예..
-
[프로그래머스 Lv. 1] 두 정수 사이의 합Algorithm/JavaScript 2023. 10. 20. 15:14
[문제 설명] 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요.예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. [입출력 예]abreturn35123335312 [풀이]- a와 b를 비교해줄 함수 필요- Math.min(a, b) : a와 b중 최소값 출력- Math.max(a,b) ; a와 b중 최대값 출력function solution(a, b) { let sum = 0; for(let i = Math.min(a,b); i
-
[프로그래머스 Lv. 1] 정수 내림차순으로 배치하기Algorithm/JavaScript 2023. 10. 20. 14:48
[문제 설명] 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. [입출력 예]nreturn 118372 873211 [풀이]function solution(n) { return Number(String(n).split('').sort().reverse().join(''));}- n이 오름차순 정렬 제대로 안되어있으므로 sort()로 오름차순 정렬 후 reverse()로 내림차순 정렬
-
[프로그래머스 Lv. 1] 정수 제곱근 판별Algorithm/JavaScript 2023. 10. 20. 14:32
[문제 설명] 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요. [입출력 예]nreturn1211443-1[풀이]- Math.sqrt(n) : n의 제곱근 출력 ( Math.sqrt(9) => 3 )- Math.pow(2, 3) : 2의 3제곱 출력function solution(n) { return Number.isInteger(Math.sqrt(n)) ? Math.pow(Math.sqrt(n)+1, 2) : -1;}