티스토리 뷰

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

제한 사항
n은 0 이상 3000이하인 정수입니다.

 

문제 풀이

더보기

문제를 풀기 위해 생각한 로직은

n의 약수 : 나눴을 때 나머지가 0인 수 
for 문을 써서 1~n까지 다 나눠서 나머지가 0인 수만 걸러내면 되겠다. 
걸러낸 수를 다 더하면 되겠다. 

 

였다. for문을 이용하여 짠 첫번째 코드.

function solution(n) {
    const sum = 0
    for(let i = 0; i<=n; i++){
        if (n%i = 0){
            return i
        } sum +=i
    }
    return sum
}

결과는 실패. 어떤 문제점이 있는지 모르겠어서 gpt한테 물어봤다. 

1. 할당 연산자를 틀렸다! '===' 를 습관적으로 '='로 입력했다. 이런 초보적인 실수를! 난 초보지만. 

2. const는 상수인데, for문을 통해서 sum의 값을 변경하려고 하니 안됐던 것 같다. sum값이 변하는 건 재할당이구나. 생각지 못한 부분이어서 const를 재할당 가능한 var로 변경했다. 

3. return이 있으면 그 즉시 함수가 종료된다고 한다. 이건 또 처음듣는 얘기라 확인했다.

진짜다.

그래서 연산자를 고치고, var로 고치고,return i를 없애고 함수를 다시 돌려보았다. sum +=i도 반복되어야 하니까 for문 안에 넣었다. 두번째 코드. 

 

정답 코드

function solution(n) {
    var sum = 0
    for(let i = 0; i<=n; i++){
        if (n%i === 0){
        sum +=i}
    }
    return sum
}

잘 작동한다. 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함