(Python, Java) 프로그래머스 - 콜라츠 추측
in Algorithm on Programmers, Level1
[문제 링크]
Python 풀이
def solution(num):
cnt = 0
while cnt != 500 and num != 1:
if num % 2 == 0:
num //= 2
else:
num = num * 3 + 1
cnt += 1
return cnt if cnt != 500 else -1
Java 풀이
class Solution {
public int solution(int num) {
int answer = 0;
long n = (long) num;
while (n != 1) {
if (answer >= 500) {
return -1;
}
n = (n % 2 == 0) ? n / 2 : n * 3 + 1;
answer += 1;
}
return answer;
}
}
3배하는 과정에서 int 범위를 초과하는 경우가 있기 때문에 long으로 형변환을 한 뒤에 진행해야 한다.