코테/프로그래머스

[프로그래머스/Lv. 1] 콜라츠 추측

imname1am 2023. 3. 2. 22:27
반응형

🔺 문제

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

🔺 코드

import java.util.*;

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

유의할 점 ‼ n을 int가 아니라 long으로 해야 값이 올바르게 나온다.

그 이유는 오버플로우가 발생하기 때문이라고...

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


🔺 다른 풀이들

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Collatz {
    public int collatz(int num) {
        int answer = 0;

        for (int i = 0; i < 500; i++) {
          num = (num % 2 == 0) ? (num / 2) : (num * 3 + 1);
          if (num == 1) return i + 1;
        }

        return -1;
    }
}

for문을 사용하셨당

반응형