-
프로그래머스 - 콜라츠 추측 [자바]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이 나오기 때문에 제일 앞쪽에서 예외처리 하여야 한다.
반응형