강의로 돌아가기
고동욱

JS for loop break 관련 질문입니다. (주의 : 정답 스포 있습니다.)

function solution(num) {

    if(num === 1){
        return 0
    }

    for(let i=0;i<501;i++){
        console.log(num,i)
        if(num%2===0){
            num = num/2
        }else if(num%2!==0){
            num = (num*3)+1
        }else if(num === 1){
            return i
            break
        }else if(i === 500){
            return -1
        }
    }
}

아래는 정답 코드입니다.
아래처럼 적으면 break 를 통해 잘 빠져나오는데
위에처럼 적으면 빠져나오지 못하는 이유가 궁금합니다.

작성중인 코드―solution.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function solution(num) {

    if(num === 1){
        return 0
    }

    for(let i=0;i<501;i++){
        console.log(num,i)
        if(num === 1){
            return i
            break
        }else if(i === 500){
            return -1
        }else if(num%2===0){
            num = num/2
        }else if(num%2!==0){
            num = (num*3)+1
        }
    }



}
  • 우준범

    1도 홀수여서 else if(num%2!==0) 에 걸리기 때문에 연산이 계속해서 들어가기 때문입니다. 아래는 홀수판정보다 num이 1인지부터 먼저 판단하기 때문에 빠져나올 수 있습니다.

    우준범―2022.11.12 16:19
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.