Algorithms/- 프로그래머스
프로그래머스 - 콜라츠 추측 [자바]
자굿
2022. 2. 12. 01:49
- 문제 링크 : 콜라츠 추측
코딩테스트 연습 - 콜라츠 추측
1937년 Collatz란 사람에 의해 제기된 이 추측은, 주어진 수가 1이 될때까지 다음 작업을 반복하면, 모든 수를 1로 만들 수 있다는 추측입니다. 작업은 다음과 같습니다. 1-1. 입력된 수가 짝수라면 2
programmers.co.kr
정답(Solution)
class Solution {
public int solution(int num) {
if(num == 1){
return 0;
}
long n = (long) num;
for(int i=0; i<500; i++){
n = collatz(n);
if(n == 1){
return i+1;
}
}
return -1;
}
private long collatz(long n){
if(n % 2 == 0){
n = n / 2;
}else{
n = (n * 3) + 1;
}
return n;
}
}
분석
- num을 값이 8천만이기 때문에 3을 곱하였을때 21억이 넘어 long으로 풀어줘야 한다.
- 또한 num 가 1일때 collatz함수에 대입해보면 0이 아니라 3이 나오기 때문에 제일 앞쪽에서 예외처리 하여야 한다.
반응형