프로그래머스 Lv.1 콜라츠 추측개발자가 되기까지 (2023.08.16~2024.04.15)/[Algorithm] Programmers ver.Java2024. 1. 29. 09:49
Table of Contents
<1st Try>
class Solution {
public int solution(int num) {
int answer = 0;
if(num == 1) {
return 0;
}else {
while (num != 1) {
if (answer > 500) {
return -1;
}
if(num % 2 == 0) {
num = num / 2;
} else {
num = (num * 3) + 1;
}
answer++;
}
}
return answer;
}
}
test3에서 자꾸 실패해서 알아보니, 오버플로우가 생긴다면 음수인 경우에도 계속 계산을 진행하면서
int 범위를 넘어서기 때문에 정확한 계산을 할 수 없다고 한다.
그래서 int를 long으로 형변환해주었다.
<Solution>
class Solution {
public int solution(int num) {
int answer = 0;
long numLong = (long) num;
if(numLong == 1) {
return 0;
}else {
while (numLong != 1) {
if (answer > 500) {
return -1;
}
if(numLong % 2 == 0) {
numLong = numLong / 2;
} else {
numLong = (numLong * 3) + 1;
}
answer++;
}
}
return answer;
}
}
728x90
@rlozlr :: 얼렁뚱땅 개발자
얼렁뚱땅 주니어 개발자
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!