여니의 성장 diary
article thumbnail
728x90
반응형

 

프로그래머스 코딩 기초 트레이닝 문제 중

Lv.0에 해당하는 '두 수의 합' 문제에서 생각지도 못한 에러를 마주했다😱

 

class Solution {
    public String solution(String a, String b) {
        String answer = "";
        
        long num_a = Long.parseLong(a);
        long num_b = Long.parseLong(b);
        
        long sum = num_a + num_b;
        
        answer = "" + sum;
        
        return answer;
    }
}

 

java에서 가장 큰 정수형의 범위를 당연히 Long이라 생각하고,

해당 문제를 해결하기 위해 문자열을 정수형으로 변환하여

연산된 값을 반환하도록 코드를 작성하였는데!

 

 

엥? NumberFormatException 발생😨

그래서 테스트 케이스의 예시를 살펴보니

주어진 정수의 크기가 Long의 범위를 초과하는 수라니ㅠㅠㅠㅠㅠ

 

chatGPT에게 바로 물어봤지오!

 

너무 당연하고 단순하게 long 타입의 정수가

가장 큰 정수의 범위라고 생각했던 내 자신 반성해😔

 

long 타입의 최댓값보다 큰 정수를 다룰 때에는

BigInteger 클래스를 생성하여 다룰 수 있고,

BigInteger 클래스는 정수의 크기에 제한을 두지 않기 때문에

어떠한 값의 정수라도 모두 다룰 수 있다는 것을 알게되었다!

 

게다가 정수 산술을 지원하기 때문에 값의 연산도 가능👍🏻

 

import java.math.BigInteger;

class Solution {
    public String solution(String a, String b) {
        String answer = "";
        
        BigInteger num_a = new BigInteger(a);
        BigInteger num_b = new BigInteger(b);
        
        BigInteger sum = num_a.add(num_b);
        
        answer = "" + sum;
        
        return answer;
    }
}

 

BigInteger 클래스를 사용하여 표현된 정수는

add() 메서드를 활용하여 값을 연산할 수 있다는 것까지 파악하고

다시 코드를 작성해보았다.

 

 

결과는 역시나 테스트 통과는 물론

정답으로 점수까지 획득😎

오늘도 새로운 지식을 하나 얻어갑니다,,, 춍춍

728x90
반응형
profile

여니의 성장 diary

@pponyo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!