TIL

23.04.07 TIL

DDINYOUNG 2023. 4. 17. 01:13
function solution(left, right) {
    let arr = [];
    let count = 0;
    let result = 0;
    for (let i = left; i <= right; i++) {
        arr.push(i); // [ 13, 14, 15, 16, 17 ]
        for (let j = 0; j <= arr.length; j++) {
            for (let l = 0; l <= arr[j]; l++) {
                if (arr[j] % l === 0) {
                    count++;
                }
            }
            if (count % 2 === 0) {
                result += arr[j]
            } else {
                result -= arr[j]
            }
        }
    }
    return result
}

처음에는 left와 right사이의 숫자를 배열에 넣고 배열에서 반복문을 돌려서 요소를 빼오는 방식을 사용했다.

그랬더니 반복문이 계속 중복되면서 result의 값도 중복으로 계속 더 해지는건 지 값이 예상과 너무 다르게 나왔다.

거의 두 시간 동안 계속 보다가 chatGPT에게 질문,,,

일단 count변수가 전역에서 선언되어있어서 i값이 바뀌어도 초기화 되지 않아 값이 중첩되고

 

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