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 내장객체 열심히 공부해보자..........