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
반응형
'Develop growth diary > JAVA' 카테고리의 다른 글
| 📎 'String' 클래스와 'StringBuilder' 클래스의 비교 (0) | 2023.08.25 |
|---|---|
| 이것이 자바다 6장 클래스 복습 #2 - this(), 익명객체, 접근제한자 default (0) | 2022.10.26 |
| 이것이 자바다 6장 클래스 복습 #1 - 클래스, 변수, 생성자 오버로딩 (0) | 2022.10.25 |
| 자바 기반 객체지향 프로그래밍 08 - 인터페이스(interface) 구현, 추상메소드 (0) | 2022.10.19 |
| 자바 기반 객체지향 프로그래밍07 - 클래스의 다형성 (1) | 2022.10.18 |