#콜라츠추측
Q. 주어진 수가 1이 될 때까지 반복되고, 그 횟수(n)는?
입력된 수가 짝수면 2로 나누고 홀수면 3을 곱한 후 1을 더한다.
function solution(num) {
var answer = 0;
while (num != 1) { // 주어진 수가 1이 아니라면 계속 반복
if (num % 2 == 0) {
num = num / 2 // "answer = num / 2"로 작성했었음. | "num /= 2"로도 표현 가능하다.
} else {
num = (num * 3) + 1
}
answer += 1; // answer 구하고자 하는 건 횟수잖아. 한 번 반복될 때마다 1을 더해줌으로써 횟수를 표현.
}
// 작업을 500번 반복할 때까지 1이 되지 않는다면 -1을 반환
if (answer >= 500) {
return -1;
} else { // 예외가 아닌 경우(일반적인 경우) 그냥 answer를 리턴해라.
return answer;
}
return answer;
}
// 또다른 풀이
function collatz(num) {
for(var answer = 0; answer<500; answer++){
if(num%2==0){
num = num/2;
}
else if(num==1){
return answer;
}
else if(num%2==1){
num = (num*3)+1;
}
}
//if(answer == 500){return -1;}
return -1;
}
'학습 노트 > JavaScript 코딩테스트' 카테고리의 다른 글
| [JavaScript] 반복문으로 배열 모두 더하기 - for, if (0) | 2023.03.31 |
|---|---|
| [JavaScript] 문자열 치환 - repeat, slice (0) | 2023.03.30 |
| [JavaScript] 배열 정렬(오름차순, 내림차순) - sort (0) | 2023.03.30 |
| [JavaScript] 배열에서 조건을 만족하는 값 찾기 - find, findIndex, filter (0) | 2023.03.30 |
| [JavaScript] 배열 요소의 위치 찾기 - indexOf (0) | 2023.03.30 |