728x90
반응형
[문제 링크]
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제]

📍 [코드]
class Solution {
public int solution(int num) {
long n = num; // 오버플로우로 인한 계산 오류 방지 (ex. -1 리턴이어야 하는데 488 리턴)
int cnt = 0;
if(n== 1) return 0;
while(n != 1){
if(n % 2 == 0) n = n / 2;
else n = (n * 3) + 1;
cnt++;
if(cnt > 500) return -1;
}
return cnt;
}
}
💡 접근법
- n이 1이 될 때까지 반복하며
- 문제 조건 그대로 조건문을 통해 n 값을 갱신한다.
- 이후 몇번 반복했는지 횟수 계산 후 반환
- 이때, 500번이 넘으면 -1 반환
📌 문제점 & 해결
- 500번이 넘어서 -1을 반환해야 하는 테스트 케이스에서 488을 반환하는 문제 발생
- 이는
int타입으로 num의 홀수 계산을 수행하면int범위를 벗어나며 오버플로우가 발생됨
➡️ 즉, 계산 오류 발생 (엉뚱한 음수값) - 그러므로
int타입의 num을long타입으로 변환하여 문제 해결
💬 마무리
level 1 문제라 수월하게 풀었으며, 예상치 못한 오버플로우 문제는 근본적인 원인을 해결하려 하지 않고
횟수 제한을 400으로 주며 야매로 풀려고 했던 것 같다.
하지만, 아무리 생각해도 이게 답이 아닐 것 같다고 생각이 들었고 결국 오버플로우 문제임을 깨닫고 수정했다.
얼렁뚱땅 넘어가지 말자..!!
728x90
반응형
'💻코딩 > 💡Programmers' 카테고리의 다른 글
| [프로그래머스|JAVA] 최댓값과 최솟값 | 🔢 Integer.MAX_VALUE / Integer.parseInt 활용 (1) | 2025.08.25 |
|---|---|
| [프로그래머스|JAVA] 하샤드 수 | 🌐 아스키코드 활용 -> 형변환 (5) | 2025.08.25 |
| [프로그래머스|JAVA] 더 맵게 | 💡 우선순위 큐 활용 | Min Heap (6) | 2025.08.25 |
| [프로그래머스|JAVA] 게임 맵 최단거리 | ↔️ BFS 활용 | Queue 활용 (5) | 2025.08.25 |
| [프로그래머스|JAVA] 타겟 넘버 | ↕️ DFS 활용 | 간결 코드 (4) | 2025.08.24 |
