728x90
반응형
[프로그래머스] 코딩테스트 연습 -> 연습문제 -> 콜라츠 추측
https://school.programmers.co.kr/learn/courses/30/lessons/12943
해결 과정
우선 num 가 1이 될 때 return 0을 바로 해주는 조건문을 먼저 삽입한다.
다음 본격적으로 while 반복문 루프를 돌면서 진행해보자.
먼저 풀이 횟수인 answer이 500 이상이되면 0을 바로 return 해주는 조건문을 만들고,
다음으로 짝수와 홀수를 구분해주며 각 공식에 따라 num를 계산해준다.
이 조건문이 끝나면 answer++을 하여 풀이 횟수를 하나씩 높여주고,
여기서 만약 num가 1이 되어 콜라츠 추측을 완성한다면 그 때의 answer 값을 return 해주면 된다.
하지만 예시로 나온 626331이 계속 488로 해결되지 않는 오류가 있었는데,
알고보니 계산을 하는 과정에서 음수로 변하여 int형으로는 적합하지 않은 경우가 있다고 한다.
그래서 처음에 long number = Long.valueOf(num); 를 사용하여 형변환을 해준 후 진행하면,
모든 테스트케이스에 적합한 완벽한 풀이가 나오게 된다.
소스 코드
class Solution {
public int solution(int num) {
int answer = 0;
long number = Long.valueOf(num);
if (num == 1) {
return 0;
}
while (true) {
if (answer > 500) {
return -1;
}
if (num % 2 == 0) {
num /= 2;
}else if(num % 2 == 1) {
num = num*3 + 1;
}
answer++;
if (num == 1) {
return answer;
}
}
}
}
728x90
반응형
'JAVA > Programmers' 카테고리의 다른 글
JAVA 프로그래머스 [나누어 떨어지는 숫자 배열] 자바 Lv.1 (0) | 2023.08.03 |
---|---|
JAVA 프로그래머스 [서울에서 김서방 찾기] 자바 Lv.1 (0) | 2023.08.03 |
JAVA 프로그래머스 [두 정수 사이의 합] 자바 Lv.1 (0) | 2023.08.02 |
JAVA 프로그래머스 [하샤드 수] 자바 Lv.1 (0) | 2023.08.02 |
JAVA 프로그래머스 [정수 내림차순으로 배치하기] 자바 Lv.1 (0) | 2023.08.01 |
댓글