-
[코딩테스트] 프로그래머스 약수의 개수와 덧셈 자바스크립트프론트엔드 개발자가 될거야./코딩테스트 2022. 10. 11. 11:34
이 문제는 풀이과정을 머릿속에 꼭꼭 저장해두고 싶다.
왜냐하면 많은 사실을 깨달을 수 있기 때문에!!!!!!👊🏻
이 문제를 풀기위해 먼저 알아야 할 것이 있다.
- Math.sqrt(16) = 4
: Math.sqrt(숫자)는 제곱근을 구해준다. (16의 제곱근 4)- Number.isInteger(숫자)
: Number.isInteger(숫자)는 숫자가 정수면 true, 아니면 false제곱근이 정수면 약수는 홀수이다!!!!!! => 머릿속에 넣자 "제곱근 정수 === 약수 홀수"
ex) 16의 제곱근은 4로 정수이다. ⇒ 약수의 개수 1,2,4,8,16 총 5개다. ⇒ 16의 약수 = 홀수
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고,
약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ left ≤ right ≤ 1,000
입출력 예
입출력 예 설명
입출력 예 #1
- 다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
- 따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
입출력 예 #2
- 다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
- 따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.
문제 풀이
- 방법1. "제곱근이 정수면 약수는 홀수"라는 공식을 몰랐을 때 접근할 수 있는 방법
// 약수를 세는 함수 function countMeasure(number) { let count = 0 // 1부터 number까지 number를 나누어떨어지게하면 약수이므로 카운트 for (let i = 1; i < number + 1; i++) { if (number % i === 0) { count += 1 } } // 약수가 짝수인 경우 양수 리턴 if (count % 2 === 0) { console.log(number) return number } // 약수가 음수인 경우 음수 리턴 else { console.log(-number) return -number } } function solution(left, right) { let answer = 0; // left부터 right까지 약수의 개수 세기 for (let i = left; i < right + 1; i++) { answer += countMeasure(i) } }
- 방법2. "제곱근이 정수면 약수는 홀수"라는 공식을 알 때
function solution(left, right) { let answer = 0; for(let i=left; i<right+1; i++){ Number.isInteger(Math.sqrt(i)) ? answer-=i : answer+=i } return answer }
'프론트엔드 개발자가 될거야. > 코딩테스트' 카테고리의 다른 글
[코딩테스트] 프로그래머스 삼총사 자바스크립트 (0) 2022.10.21 [코딩테스트] 프로그래머스 음양더하기 자바스크립트 (0) 2022.10.14 [코딩테스트] 프로그래머스 2016년 자바스크립트 (0) 2022.10.13 [코딩테스트] 배열, 문자, 숫자 메서드 총정리 (0) 2022.10.11 [TIL] Today I Learned : 코드카타 Day1 & 프로그래머스 직사각형 별찍기 (0) 2022.07.04