코딩테스트/Programmers

약수의 개수와 덧셈 (JS)

동띵 2022. 7. 8. 10:49

https://school.programmers.co.kr/learn/courses/30/lessons/77884

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

function solution(left, right) {
    let answer = 0;
    let divisorObj = {};
    
    for (let i=left; i<=right; i++) {
        let cnt = 0;
        for (let j=1; j<=i; j++) {
            if (i % j === 0) cnt++;
        }
        divisorObj[i] = cnt;
    }
    
    for (let i in divisorObj) {
        if (divisorObj[i] % 2 === 0) {
            answer += parseInt(i);
        } else answer -= parseInt(i);
    }
    
    return answer;
}

(for 문)
매개변수 left부터 right까지 값들의 약수의 개수를 구해
객체를 만들어주었다.

***
divisorObj [i] = cnt는
예를 들어 i가 13, cnt가 2라면
divisorObj라는 객체에 key 값이 13, value 값이 2인 쌍이 만들어지는 것
***


(for ... in 문)
divisorObj를 돌면서 약수의 개수가 짝수이면 answer에 해당 key 값을 더하고,
홀수이면 key 값을 빼줬다.
key 값이 문자열이므로 parseInt를 사용하여 정수로 바꿔주었다.

'코딩테스트 > Programmers' 카테고리의 다른 글

두 개 뽑아서 더하기 (JS)  (0) 2022.07.09
3진법 뒤집기 (JS)  (0) 2022.07.09
완주하지 못한 선수 (JS)  (0) 2022.07.08
내적 (JS)  (0) 2022.07.07
음양 더하기 (JS)  (0) 2022.07.07