https://programmers.co.kr/learn/courses/30/lessons/12943
let n = 6;
function solution1(num) {
let answer = 0;
for(let i = 0; i < 500; i++) {
if(num != 1) {
num = num % 2 == 0 ? num / 2 : num * 3 + 1;
} else {
return answer = i;
}
}
return answer = -1;
}
console.log(solution1(n)); // 8
- 반복문을 통해 조건 중 500번까지만 반복하는 조건을 설정한다.
function solution2(num) {
let answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
console.log(solution2(n)); // 8
- 반복문에 논리연산자를 활용하여 1이 아닐 때, 500번 반복했을 때의 두 가지 조건을 설정한다.
function solution3(num,count = 0) {
return num == 1 ? (count >= 500 ? -1 : count) : solution3(num % 2 == 0 ? num / 2 : num * 3 + 1,++count);
}
console.log(solution3(n));
- 삼항연산자를 사용하여 num이 1일 때와 1이 아닐때로 조건을 나눈다.