두 수의 합

Programmers 코딩 기초 트레이닝


문제 설명

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

제한사항

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

입출력 예

a b result
“582” “734” “1316”
“18446744073709551615” “287346502836570928366” “305793246910280479981”
“0” “0” “0”

입출력 예 설명

입출력 예 #1

예제 1번의 a, b는 각각 582, 734이고 582 + 734 = 1316입니다. 따라서 “1316”을 반환합니다.

입출력 예 #2

예제 2번의 a, b는 각각 18446744073709551615, 287346502836570928366이고 18446744073709551615 + 287346502836570928366 = 305793246910280479981입니다. 따라서 “305793246910280479981”을 반환합니다.

입출력 예 #3

예제 3번의 a, b는 각각 0, 0이고 0 + 0 = 0입니다. 따라서 “0”을 반환합니다.

BigInteger라는 이름부터 커다란 녀석이 있었다.
이 클래스는 정수의 크기에 제한을 두지 않아서 매우 큰 값을 다룰 수 있다고 한다.
정수형으로의 타입 변환이 필요하지 않고 문자열 형태로 숫자를 입력받아 내부적으로 해당 문자열을 정수로 변환하여 처리한다.
그리고 +, -. *, /, %와 같은 연산자를 사용하지 않고 각각의 메서드를 사용해햐 한다.

덧셈

BigInteger sum = numA.add(numB);

뺄셈

BigInteger difference = numA.subtract(numB);

곱셈

BigInteger product = numA.multiply(numB);

나눗셈

BigInteger division = numA.divide(numB);
=> numA / numB

나머지 연산

BigInteger remainder = numA.remainder(numB);
=> numA % numB


import java.math.BigInteger;

class Solution {
    public String solution(String a, String b) {
        BigInteger numA = new BigInteger(a);
        BigInteger numB = new BigInteger(b);
        BigInteger sum = numA.add(numB);
        
        return sum.toString();
    }
}

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

Leave a comment