[Javascript] 프로그래머스 LV1 약수의 개수와 덧셈
문제 설명
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ left ≤ right ≤ 1,000
입출력 예
left | right | result |
---|---|---|
13 | 17 | 43 |
24 | 27 | 52 |
입출력 예 설명
입출력 예 #1
다음 표는 13부터 17까지의 수들의 약수를 모두 나타낸 것입니다.
수 | 약수 | 약수의 개수 |
---|---|---|
13 | 1,13 | 2 |
14 | 1 ,2,7,14 | 4 |
15 | 1,3,5,15 | 4 |
16 | 1,2,4,8,16 | 5 |
17 | 1,17 | 2 |
따라서, 13 + 14 + 15 - 16 + 17 = 43을 return 해야 합니다.
입출력 예 #2
다음 표는 24부터 27까지의 수들의 약수를 모두 나타낸 것입니다.
수 | 약수 | 약수의 개수 |
---|---|---|
24 | 1,2,3,4,6,8,12,24 | 8 |
25 | 1,5,25 | 3 |
26 | 1,2,13,26 | 4 |
27 | 1,3,9,27 | 4 |
따라서, 24 - 25 + 26 + 27 = 52를 return 해야 합니다.
문제 풀이
입력받은 수가 완전제곱수(어떤 자연수를 제곱하여 만들어 지는 수)인 경우 약수의 개수는 홀수가 된다. 따라서 반복문을 사용하여 left부터 right까지의 수를 i로 입력 받고 숫자의 제곱근을 반환받는 Math.sqrt(i)를 사용하여 i의 제곱근을 구한뒤 제곱근이 정수(자연수)인지 조건문을 통해 확인하고 정수이면 완전제곱수이므로 약수의 개수가 홀수이기 때문에 result에서 -i를 해준다. i의 제곱근이 정수가 아닐 경우 완전제곱수가 아니므로 약수의 개수는 짝수, 따라서 result에 +i를 해준다.
function solution(left, right) {
let result = 0;
for (let i = left; i <= right; i++) {
if (Math.sqrt(i) % 1 === 0) { // Number.isInteger(Math.sqrt(i)를 통해서도 정수 판별이 가능
result = result - i;
} else {
result = result + i;
}
}
return result;
}
https://programmers.co.kr/learn/courses/30/lessons/77884
위 URL을 클릭하시면 해당 문제로 연결됩니다.
Author And Source
이 문제에 관하여([Javascript] 프로그래머스 LV1 약수의 개수와 덧셈), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@pizzahand/Javascript-프로그래머스-LV1-약수의-개수와-덧셈저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)