프로그래머스/Lv. 0(코딩 기초 트레이닝)

[프로그래머스 코딩테스트] 두 수의 합(Java)

Sigfriede 2023. 6. 5. 01:10

  문제 설명

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

 

  제한사항

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

 

  입출력 예

a b result
"582" "734" "1316"
"18446744073709551615" "287346502836570928366" "305793246910280479981"
"0" "0" "0"
import java.math.BigInteger;
class Solution {
    public String solution(String a, String b) {
        BigInteger big1 = new BigInteger(a);
        BigInteger big2 = new BigInteger(b);
        
        BigInteger sum = big1.add(big2);
        String answer = sum.toString();
        return answer;
    }
}

  BigInteger를 생성합니다. BigInteger는 인자로 문자열을 받기 때문에 문자열을 매개 변수로 주는 이 문제에 잘 맞는 것 같습니다.

  BigInteger형의 sum 변수를 생성합니다. add 메소드를 이용하여 두 매개 변수를 더합니다.

  answer는 문자열로의 반환을 요구하므로 toString 메소드를 이용하여 두 수의 합을 문자열로 변환합니다.

  int형이나 long형으로는 큰 수를 다룰 수 없어서 BigInteger를 사용했습니다. 앞선 두 형은 숫자 표현에 제한이 있으나, BigInteger는 제한없이 큰 수를 다루기에 무리가 없습니다.

  Stack 또는 배열 형태로의 풀이도 고려해볼만 합니다. 그러나 문자열끼리의 수학적 계산은 할 수 없어서 계산하기 전 일일이 정수형으로의 형변환을 해주어야 하므로 여간 코드가 복잡해지는 것이 아닐 것입니다.