문제 내용은 값을 받아서 받은 값이 짝수면 2로 나누고, 홀수면 3을 곱하고 1을 더해주되 이 과정에서 1이 나오면 계산한 횟수를 반환하고, 500번이 넘어도 1을 만들지 못하면 -1을 반환해주면 된다
주의할 점은 1이 들어오는 경우에는 콜라츠 추측을 돌려서 1에서 1을 만들어 반환할 것이 아니라, 돌릴 것이 없으므로 0을 반환해주면 된다
public class Collatz {
public static int solution(int num) {
int answer = 0;
if(num == 1) {
return answer;
}
for(int i = 0; i<500; i++) {
if(num % 2 == 0) {
num = num / 2;
answer++;
} else if(num % 2 != 0) {
num = num * 3 + 1;
answer++;
}
if(num == 1) {
return answer;
}
}
return -1;
}
public static void main(String[] args) {
System.out.println(solution(1));
}
}
문제를 풀어보자면 값을 받아온 뒤 1이면 그냥 그대로 끝내고, 아니면 반복문을 500번 돌려서 짝수면 2를 나누고 홀수면 3을 곱한 뒤 1을 더해주면서 횟수를 계산해주고 계산 과정에서 1을 구했다면 횟수를 리턴해주고 500번을 해도 1이 나오지 않았다면 -1을 리턴해주면 끝이다
Leave a Reply