function calcNum(result) {
if (result % 2 === 0) return result / 2;
else return result * 3 + 1;
}
function solution(num) {
let answer = 0;
if (num === 1) return 0;
let result = num;
while (result !== 1) {
result = calcNum(result)
answer++;
if (answer === 500) return -1;
}
return answer;
}
num이 1이 아니라면 처음에는 result라는 변수에 num을 새로 담았는데
앞에 num이 1인지 여부를 먼저 판단한 이후의 연산이므로 따로 담을 필요가 없었다.
다른 사람 풀이에서는 while문 안에 조건을 2개 넣었는데 나는 이 부분이 가독성이 떨어진다고 생각해서 그냥 while문 안에서 if문으로 탈출 조건을 걸어주었다.
function solution(num) {
let answer = 0;
while (num !== 1 && answer !== 500) {
num = num % 2 === 0 ? num / 2 : num * 3 + 1;
answer++;
}
return num === 1 ? answer : -1;
}
function solution(num) {
let answer = 0;
if (num === 1) return 0;
while (num !== 1) {
num = num % 2 === 0 ? num / 2 : num * 3 + 1;
answer++;
if (answer === 500) return -1;
}
return answer;
}