πŸ“š μ½”λ”©ν…ŒμŠ€νŠΈ/λ°±μ€€ & ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€][JAVA]Level 1 : 콜라츠 μΆ”μΈ‘

deep_lee 2022. 10. 8. 16:46

문제 μ„€λͺ…

1937λ…„ Collatzλž€ μ‚¬λžŒμ— μ˜ν•΄ 제기된 이 좔츑은, μ£Όμ–΄μ§„ μˆ˜κ°€ 1이 될 λ•ŒκΉŒμ§€ λ‹€μŒ μž‘μ—…μ„ λ°˜λ³΅ν•˜λ©΄, λͺ¨λ“  수λ₯Ό 1둜 λ§Œλ“€ 수 μžˆλ‹€λŠ” μΆ”μΈ‘μž…λ‹ˆλ‹€. μž‘μ—…μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€. 

1-1. μž…λ ₯된 μˆ˜κ°€ 짝수라면 2둜 λ‚˜λˆ•λ‹ˆλ‹€. 
1-2. μž…λ ₯된 μˆ˜κ°€ ν™€μˆ˜λΌλ©΄ 3을 κ³±ν•˜κ³  1을 λ”ν•©λ‹ˆλ‹€. 
2. 결과둜 λ‚˜μ˜¨ μˆ˜μ— 같은 μž‘μ—…μ„ 1이 될 λ•ŒκΉŒμ§€ λ°˜λ³΅ν•©λ‹ˆλ‹€. 

예λ₯Ό λ“€μ–΄, μ£Όμ–΄μ§„ μˆ˜κ°€ 6이라면 6 → 3 → 10 → 5 → 16 → 8 → 4 → 2 → 1 이 λ˜μ–΄ 총 8번 λ§Œμ— 1이 λ©λ‹ˆλ‹€. μœ„ μž‘μ—…μ„ λͺ‡ λ²ˆμ΄λ‚˜ λ°˜λ³΅ν•΄μ•Ό ν•˜λŠ”μ§€ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜, solution을 μ™„μ„±ν•΄ μ£Όμ„Έμš”. 단, μ£Όμ–΄μ§„ μˆ˜κ°€ 1인 κ²½μš°μ—λŠ” 0을, μž‘μ—…μ„ 500번 λ°˜λ³΅ν•  λ•ŒκΉŒμ§€ 1이 λ˜μ§€ μ•ŠλŠ”λ‹€λ©΄ –1을 λ°˜ν™˜ν•΄ μ£Όμ„Έμš”. 

μ œν•œ 사항
  • μž…λ ₯된 수, num은 1 이상 8,000,000 미만인 μ •μˆ˜μž…λ‹ˆλ‹€. 
μž…μΆœλ ₯ 예nresult
6 8
16 4
626331 -1

 

 

 


μž…λ ₯받은 num이 1이 λ λ•ŒκΉŒμ§€ λ°˜λ³΅ν•˜κ³ , 반볡횟수λ₯Ό countν•˜μ—¬ 500이 되면 -1을 λ°˜ν™˜ν•˜κ³  μ’…λ£Œ


 

 

class Solution {
    public int solution(long num) {
       int answer = 0;
        while(num!=1){
            if(num%2==0){
                num/=2;
            }else{
                num=num*3+1;
            }
            answer++;
            if(answer==500){
                answer=-1;
                break;
            }
        }
        return answer;
    }
}