public int solution(int num2) {
int answer = 0;
long num = (long)num2;
long 타입으로 형변환을 하지 않으면 int범위를 초과하는 경우가 발생
num이 int일 경우 연산 과정에서 int의 최대값(약 21억)을 초과하게 되어, 음수가 출력됨
while(num != 1) {
if (num%2 == 0) {
num = num/2;
}else {
num = (num * 3) + 1;
}
answer++;
while문으로 1이 아닐 때까지 반복하면서 작업 횟수(answer)를 늘려줌
이 때 입력된 수가 짝수라면 2로 나눔
이 때 결과로 나온 값을 num에다 저장해줌
그게 아니라면(홀수라면) 3을 곱하고 1일 더한 값을 num에 저장함
num = (num%2 ==0)? num/2 : (num*3)+1;
answer++;
삼항 연산자로도 가능
짝수이면 2로 나누고 그게 아니라면 3을 곱한 후 1을 더함
그 값을 num에 저장하고 작업 횟수를 증가시킴
if (answer >= 500) {
answer = -1;
break;
class Solution { public int solution(int num2) { int answer = 0; long num = (long)num2; while(num != 1) { if (num%2 == 0) { num = num/2; }else { num = (num * 3) + 1; } answer++; if (answer >= 500) { answer = -1; break; } } return answer; } }