풀이
입력된 수, num은 1 이상 8000000 미만인 정수라고 주어지는데, 이때 num을 int로 받으면 범위가 벗어남.
long num으로 받아서 풀어야한다.
int 범위: 부호 있는 정수 (32 bits) -2147483648 ~ 2147483647
long 범위: 부호 있는 정수 (64 bits) -9223372036854775808 ~ 9223372036854775807
코드
public class 콜라츠_추측 {
public static void main(String[] args) {
// Test case
long num = 626331;
solution(num);
}
public static int solution(long num) {
int answer = 0;
while(num != 1) {
if(answer >= 500){
answer = -1;
break;
}
if(num % 2 == 0) {
num = num / 2;
} else {
num = (num * 3) + 1;
}
answer++;
}
return answer;
}
}
'CS > Programmers' 카테고리의 다른 글
[Programmers.Lv1] 비밀지도 (0) | 2020.08.20 |
---|---|
[Programmers.Lv1] 크레인 인형 뽑기 게임 (0) | 2020.08.19 |
[Programmers.Lv1] 키패드 누르기 (0) | 2020.08.13 |
[Programmers.Lv1] 실패율 (0) | 2020.08.09 |
[Programmers.Lv1] 핸드폰 번호 가리기 (0) | 2020.08.08 |