[프로그래머스|JAVA] 콜라츠 추측 |💡 타입 오버플로우 문제 해결 (long)

2025. 8. 25. 15:14·💻코딩/💡Programmers
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
'💻코딩/💡Programmers' 카테고리의 다른 글
  • [프로그래머스|JAVA] 최댓값과 최솟값 | 🔢 Integer.MAX_VALUE / Integer.parseInt 활용
  • [프로그래머스|JAVA] 하샤드 수 | 🌐 아스키코드 활용 -> 형변환
  • [프로그래머스|JAVA] 더 맵게 | 💡 우선순위 큐 활용 | Min Heap
  • [프로그래머스|JAVA] 게임 맵 최단거리 | ↔️ BFS 활용 | Queue 활용
망꼬누나
망꼬누나
공부한 내용을 정리하는 공간입니다.
  • 망꼬누나
    망꼬누나의 개발 공부
    망꼬누나
  • 전체
    오늘
    어제
    • 분류 전체보기 (165)
      • ℹ️ 정보 및 실습 (19)
        • ☑️ Git & GitHub (8)
        • ☑️ 프로젝트 (6)
        • ☑️ 회고 및 후기 (5)
      • 🛠 CS (1)
      • 💻코딩 (88)
        • 💡Baekjoon (17)
        • 💡Programmers (71)
      • ✏️공부 (48)
        • 💡OS (1)
        • 💡Network (6)
        • 💡SpringBoot (9)
        • 💡JAVA (21)
        • 💡SQL (1)
        • 💡DB (2)
        • ☁️ Cloud (4)
        • 💡알고리즘 (4)
      • 📌 자격증 (6)
        • 📝정보처리기사 (3)
        • 📝SQLD (3)
  • 블로그 메뉴

    • 홈
    • github
  • 나의 GitHub Contribution 그래프
    Loading data ...
  • 인기 글

  • 태그

    동시성제어
    프로그래머스 #JAVA
    트랜잭션
    네트워크
    Java
    GIT
    Set
    자바
    코딩테스트
    자료구조
    AWS
    백엔드
    Stream
    알고리즘
    github
    S3
    데브코스
    map
    프로그래머스
    baekjoon
  • 최근 댓글

  • 최근 글

  • 250x250
    반응형
  • hELLO· Designed By정상우.v4.10.5
망꼬누나
[프로그래머스|JAVA] 콜라츠 추측 |💡 타입 오버플로우 문제 해결 (long)
상단으로

티스토리툴바