Algorithm
[JavaScript] 프로그래머스 - 콜라츠 추측
by 랩린안
2022. 9. 22.
/*
문제 : 주어진 수가 1이 될 때까지 작업을 몇 번이나 반복해야 하는지 반환하는 함수를 만들어라
자료 : 정수 num
조건 :
주어진 수가 1인 경우에는 0 return
작업을 500번 반복할 때까지 1이 되지 않는다면 –1 return
1-1. 입력된 수가 짝수라면 2로 나눕니다.
1-2. 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
2. 결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.
계획 :
짝수인지 홀수인지 판별후 짝수면 2로 나눔 홀수면 3으로 나옴
이거를 계속 재귀로 반복?? ㄷㄷ
반성 :
처음 재귀 함수로 풀때 조건문 거는 걸 제대로 파악하지 못해서
시간이 좀 걸렸었다. 분하다...
*/
const solution = (num, count = 0) => {
if (num === 1) {
return count > 500 ? -1 : count;
}
return solution(num % 2 === 0 ? num / 2 : num * 3 + 1, count + 1);
};
// 재귀함수2
const solution2 = (num, count = 0) => {
return num === 1
? count > 500
? -1
: count
: solution2(num % 2 === 0 ? num / 2 : num * 3 + 1, count + 1);
};
// while문
const solution3 = (num) => {
let count = 0;
while (true) {
if (num === 1) {
return count > 500 ? -1 : count;
}
num = num % 2 === 0 ? num / 2 : num * 3 + 1;
++count;
}
};