Deep_Dev

๋ฌธ์ œ ์„ค๋ช…

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;
    }
}