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

두두맨·2023년 12월 19일
1


문제 정리

약수의 개수가 짝수인 수끼리 더하고 약수의 개수가 홀수인 애들을 빼주면 된다.
숫자는 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개의 댓글