반응형
프로그래머스 콜라츠 추측 - JAVA
문제 설명
- 입력된 수가 짝수라면 2로 나눕니다.
- 입력된 수가 홀수라면 3을 곱하고 1을 더합니다.
- 결과로 나온 수에 1 ~ 2 작업을 1이 될 때까지 반복합니다.
제한 사항
- 입력된 수, num은 1 이상 8000000 미만인 정수입니다.
문제 풀이
- 입력으로 주어진 num을 가지고 작업을 반복하다 보면 int범위를 초과하는 경우가 발생(ex 테스트 케이스 3)하기 때문에 long type으로 입력을 변경.
- 작업을 반복할때마다 answer를 증가시키므로 while 조건문에서 num이 1이 될 때까지 그리고 answer가 500되기 전까지로 설정한다.
- while 조건문을 만족할때까지 문제 설명의 1~2작업을 반복한다.
- 작업 횟수가 500이 넘는지 비교하고 넘는경우 -1을, 아닌 경우 횟수(answer)를 리턴한다.
소스 코드
class Solution {
public int solution(long num) {
int answer = 0;
while (num != 1 && answer <= 500) {
if (num % 2 == 0) {
num /= 2;
} else {
num = (num * 3) + 1;
}
answer++;
}
return answer >= 500 ? -1 : answer;
}
}
반응형
'알고리즘(Algorithm) > 프로그래머스(Programmers)' 카테고리의 다른 글
[프로그래머스] 하샤드 수 - JAVA (0) | 2021.11.03 |
---|---|
[프로그래머스] 평균 구하기 - JAVA (0) | 2021.11.03 |
[프로그래머스] 최대공약수와 최소공배수- JAVA (0) | 2021.11.02 |
[프로그래머스] 짝수와 홀수 - JAVA (0) | 2021.11.02 |
[프로그래머스] 제일 작은 수 제거하기 - JAVA (0) | 2021.11.02 |