Category : 조건문, 구현, Modulo
콜라츠 추측?
- 위키피디아 - 콜라츠 추측
- 우박수열 : 숫자가 커졌다 작아졌다를 반복하며 결국 1에 수렴하는 것
- 비구름에서 빗방울이 오르락내리락하며 우박이 되는 모습에 빗댐
- T(n) = n / 2 (if n is even), 3n + 1 (if n is odd)
- 이 함수를 모든 자연수 n에 대해 유한번 재귀 반복하면 1로 간다는 추측
- 문제는 간단한 알고리즘이이다. 하지만, 콜라츠 추측의 반례는 아직도 나오지 않았다. 이 추측은 86년이 넘도록 풀리지 않고 있다고합니다❗️
FLOW.
- 문제 상세보기
- 주어진 조건문을 그대로 구현하는 간단한 알고리즘 입니다.
- while(num ≠ 1) : num 이 1이 아닌 동안 계속 반복합니다.
- 짝수, 홀수 판별에 Modulo 연산(%) 을 사용합니다.
- boolean isOdd(int num) : 짝수, 홀수 판별 함수
- answer 이 500이라면 -1을 return
Code.
class Solution {
public int solution(int num) {
int answer = 0;
while(num != 1) {
if(!isOdd(num))
num = num / 2;
else
num = num * 3 + 1;
answer++;
if(answer == 500) {
return -1;
}
}
return answer;
}
private boolean isOdd(int num) {
return num % 2 == 1;
}
}
function solution(num) {
let answer = 0;
while(num != 1) {
if(num % 2 === 0) {
num = num / 2;
} else {
num = (num * 3) + 1;
}
answer++;
if(answer === 500) {
return -1;
}
}
return answer;
}
Leave a comment