Q. 콜라츠 추측
A.
class Solution {
public int solution(int num) {
int answer = 0;
long longNum = Long.valueOf(num); // num이 커질수록 int형의 범위를 벗어나니까 num을 long으로 형변환 해줌
//조건이 참일때 답을 반환
while(true){
//num이 1이거나 작업반복 횟수가 500이면 정지, 아닐 경우 작업횟수 1 증가
if(longNum == 1 || answer >= 500)
break;
answer++;
//짝수 = 2로 나눴을 때 나머지 0, 홀수 = 2로 나눴을때 나머지가 0이 아님
//num 이 짝수일 경우 2로 나누고
//num이 홀수일 경우 3을 곱한 뒤에 1을 더한다.
if((longNum%2) == 0){
longNum /= 2;
}else if((longNum%2) != 0){
longNum = longNum * 3 + 1;
}
}
//num이 1이 됐다면 작업반복횟수 answer를 반환하고 500번 반복할때까지 1이 안됐다면 -1을 반환
if(longNum == 1){
return answer;
}else{
return -1;
}
}
}
'알고리즘, 코딩테스트 > 알고리즘 풀이' 카테고리의 다른 글
[프로그래머스/ 코딩테스트 연습문제] 나누어 떨어지는 숫자 배열 (0) | 2024.11.05 |
---|---|
[프로그래머스/ 코딩테스트 연습문제] 서울에서 김서방 찾기 (0) | 2024.11.04 |
[프로그래머스/ 코딩테스트 연습문제] 두 정수 사이의 합 (0) | 2024.11.01 |
[프로그래머스/ 코딩테스트 연습문제] 하샤드 수 (0) | 2024.11.01 |
[프로그래머스/ 코딩테스트 연습문제] 정수 내림차순으로 배치하기 (0) | 2024.10.31 |