본문 바로가기
알고리즘

[Programmars] 약수의 개수와 덧셈 (JavaScript)

by 프린벼르 2022. 2. 4.

약수의 개수와 덧셈 문제

1. 나의 생각 흐름

우선 나는 left ~ right 사이의 수를 for문을 사용해서 풀어나가야겠다고 생각했다. 그래서 바로 코드짜기로 돌입하는 순간 문제가 발생했다. 왜냐면 약수의 개수를 구해야하는데 약수의 개수를 어떻게 하지? 여기서 처리를 못할것 같은데 싶었고 그래서 약수의 개수를 구할 수 있는 함수를 하나 더 생성해주는 방법을 택했다.

2. 나의 코드 정리

function divide(n){
    let count = 0;
    for(let i = 0; i <= n; i++){
        if(n % i === 0){count++;}
    }
    return count;
}
function solution(left, right) {
    let answer = 0;
    for(let i = left; i <= right; i++){
        let count = divide(i);
        if(count % 2 === 0){
            answer += i;
        }
        else{answer -= i;}
    }
    return answer;
}

3. 다른 사람들의 코드

function solution(left, right) {
    var answer = 0;
    for (let i = left; i <= right; i++) {
        if (Number.isInteger(Math.sqrt(i))) {
            answer -= i;
        } else {
            answer += i;
        }
    }
    return answer;
}

4. 결론

함수 두개를 만들어서 푸는 것보단 하나로 푸는게 시간 효율에 더 좋을 것 같다. sqrt를 이런식으로 사용한 것을 잊지말자.

댓글