Coding Test/Programmers
[Coding Test/JS] 약수의 개수와 덧셈
나는김혜린
2022. 5. 19. 21:44
1. 문제
두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주세요.
제한사항 : 1 ≤ left ≤ right ≤ 1,000
2. 풀이방법 생각
13
1 13 / 2
sum = 13
14
1 2 7 14 / 4
sum = 27
15
1 3 5 15 / 4
sum = 42
16
1 2 4 8 16 / 5
sum = 26
17
1 17 / 2
sum = 43
for문으로 left와 right를 돌리고 각각의 약수 개수를 구해서 짝수인지 아닌지만 하면 댐
-> 매우 쉬움 ㅎㅎㅎㅎㅎ
3. 코드 구현
function solution(left, right) {
let cnt = 0, sum = 0;
for(let i = left; i <= right; i++) {
for(let j = 1; j <= i; j++) {
if(i % j === 0) cnt++;
}
if(cnt % 2 === 0) sum += i;
else if(cnt % 2 !== 0) sum -= i;
cnt = 0;
}
return sum;
}
4. 알게 된 점
- Number.isInteger(Math.sqrt(i)) -> 이거 사용하면 매우 간단하게 됨
js 내장객체 열심히 공부해보자..........