[프로그래머스/Java] Lv.0 두 수의 합

febCho·2024년 3월 19일
0

코딩테스트

목록 보기
107/253
post-thumbnail

문제

0 이상의 두 정수가 문자열 a, b로 주어질 때, a + b의 값을 문자열로 return 하는 solution 함수를 작성해 주세요.

- 제한사항

  • 1 ≤ a의 길이 ≤ 100,000
  • 1 ≤ b의 길이 ≤ 100,000
  • a와 b는 숫자로만 이루어져 있습니다.
  • a와 b는 정수 0이 아니라면 0으로 시작하지 않습니다.

풀이

테스트 2번(a : 18446744073709551615, b : 287346502836570928366)의 경우 Integer.parseInt()Long.parseLong()로 파씽할 수 있는 범위의 값을 넘어섰고, 그래서 NumberFormatException이 발생했었다.

이를 처리하기 위해 try~catch 구문을 사용해 예외가 발생한 경우에만 별도의 처리를 하기로 했다. 큰 정수를 다루기 위해 내가 찾은 방법BigInteger였다.

BigInteger

  • import java.math.* 필수
  • BigInteger num = new BigInteger(String or Byte)로 초기화를 진행해야 한다.
  1. 사용법에 따라 주어진 문자열 a와 b를 BigInteger 타입으로 파싱한 뒤,
    add() 메서드를 활용해 둘을 더한다. (Biga + Bigb 🙅‍♀️)
  2. toString() 메서드를 활용해 BigInteger 타입에서 String 타입으로 형변환한다. (String.valueOf(Biga.add(Bigb)) 🙅‍♀️)

연산 및 형변환 시 BigInteger 만의 메서드가 별도로 존재해 공부하는 것이 흥미로웠다.

import java.math.*;

class Solution {
    public String solution(String a, String b) {
        String answer = "";
        
        try{
            answer = String.valueOf(Integer.parseInt(a) + Integer.parseInt(b));
        }catch(NumberFormatException e){
            BigInteger Biga = new BigInteger(a);
            BigInteger Bigb = new BigInteger(b);
            
            answer = (Biga.add(Bigb)).toString();
        }
        
        return answer;
    }
}

결과

profile
Done is better than perfect.

0개의 댓글