문제
풀이
- 문제설명에 나와있는 설명 그대로 풀이
- 이렇게 무식하게 풀어도 되는건가? 그런데 주어진 수가 작아서 그런건지 생각보다 실행시간이 짧았다.
function solution(num) {
if (num === 1) return 0;
let turn = 0;
while (num !== 1) {
if (num % 2 === 0) {
num /= 2;
} else {
num = num * 3 + 1;
}
turn += 1;
if (turn === 500) return -1;
}
return turn;
}
다른 풀이
function collatz(num) {
var answer = 0;
while(num !=1 && answer !=500){
num%2==0 ? num = num/2 : num = num*3 +1;
answer++;
}
return num == 1 ? answer : -1;
}
function collatz(num, count = 0) {
return (num == 1) ? ((count >= 500) ? -1 : count) : collatz((num % 2 == 0) ? num / 2 : (num * 3) + 1, ++count);
}