TIL 231218 algorithm - 약수의 개수와 덧셈

두두맨·2023년 12월 19일


문제 정리

약수의 개수가 짝수인 수끼리 더하고 약수의 개수가 홀수인 애들을 빼주면 된다.
숫자는 left부터 right까지 이므로 for문을 left에서 right까지 돌려준다.

풀이


function solution(left, right) {
    var result = 0;
for(let i = left; i<=right; i++ ){
    let yaksoo = 0;
    for(let j = 1; j<= i; j++){
        if(i % j === 0) yaksoo++
    }
    result = yaksoo % 2 ===0 ? result + i : result -i;
}

    return result;
}
        

바깥쪽 for문은 숫자가 몇부터 몇까지 인지 구하는거고, 안에 for문 하나 더 돌려서 약수의 개수 뽑아준다.
약수는 1부터 약수를 가지는 기준 수와 같을 수 있으므로, 범위는 1보다 크고 기준수보다 작거나 같다고 지정.
약수는 기준수 / 약수 했을 때 나머지가 0인 수를 뽑아내고, 조건에 부합하는 경우 약수의 개수에 하나씩 추가한다.
for문 다 돌리면 약수의 개수가 담긴 yaksoo 변수 / 2 했을 때 0이면 짝수, 아니면 홀수이므로
삼항연산자 걸어줘서 약수의 개수가 짝수인 경우 기준 수를 더해주고, 홀수인 경우 기준 수를 빼주는 연산 가능하도록 하면 성공!

profile
병아리 개발준비생 🐥

0개의 댓글