(1).백준 3943번 헤일스톤 수열은 뭔지 모르겠지만 콜라츠 추측인지 뭔가가 들어갔다고 하는데

일단 나눈 값이 홀수면 다시 곱해져서 더 커지기 떄문에

초반에는 그냥 나눴을 때 홀수가 되는 짝수인 경우만 테스트하고 넘겼는데

막상 오답이 나와서 확인해보니 아래아랫단계에서 홀수가 계속 되면 더 커질 수도 있기 때문에

결론적으로는 모든 값을 확인해야 했다.

 

while문 내부에서 max를 체크하게 해서 문제를 해결했는데

왜 이런 구현 문제가 있는지는 의문이고

이게 실제로 while을 사용하기 때문에 로직에 대한 이해가 없으면 터질 수 있을 것 같은데

왜 헤일스톤수열이라는 추측하기 애매한 수열을 가져왔는지는 모르겠다.

const input = `4
1
3
9999
100000`.split('\n').map(Number)

const result = []

for(let i = 1 ; i < input.length ; i++){
    let n = input[i]
    let max = n

    while(n != 1){
        if(n % 2 === 0){
            n = n / 2
        }
        else{
            n = n * 3 + 1
        }
        if(n > max){
            max = n    
        }
    }

    result.push(max)
}

console.log(result.join('\n'))

'회고' 카테고리의 다른 글

[개발일지] - 725(주말)  (0) 2025.06.28
[개발일지] - 724  (0) 2025.06.27
[개발일지] - 722(대체휴가)  (0) 2025.06.25
[개발일지] - 721  (0) 2025.06.24
[개발일지] - 720  (0) 2025.06.23

+ Recent posts