성장일기

내가 보려고 정리하는 공부기록

코딩테스트/프로그래머스 Lv.0

[프로그래머스] 두 수의 합 (BigInteger) - JAVA

와나나나 2023. 10. 15. 15:28
728x90

프로그래머스 _ 코딩 기초 트레이닝 DAY 22 - (2)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181846

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

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

(1 <= a,b의 길이 <= 100,000)

 

입력 #1 | "18446744073709551615"

출력 #1 | 18446744073709551615


>> 풀이 <<

자릿수가 100,000 이면 int나 long에 담을 수 없는 크기이다. 그래서 찾아보았는데, BigInteger라는 클래스가 있다고 한다.

사용시에는 import java.math.BigInteger 을 선언해야 한다.

BigInteger은 정수의 크기에 제한을 두지 않아서 매우 큰 값을 다룰 수 있다. 정수형으로의 타입 변환이 필요하지 않으며, 문자열 형태로 숫자를 입력받아 내부적으로 해당 문자열을 정수로 변환하여 처리한다. 

사칙연산의 경우에는 별도의 메소드가 있다.
- 덧셈 : numA.add(numB)
- 뺄셈 : numA.subtract(numB)
- 곱셈 : numA.multiply(numB)
- 나눗셈 : numA.divide(numB)

코드는 아래와 같다.

import java.math.*;
class Solution {
    public String solution(String a, String b) {
        BigInteger aa = new BigInteger(a);
        BigInteger bb = new BigInteger(b);
        return String.valueOf(aa.add(bb));
    }
}