두 수의 합
Programmers 코딩 기초 트레이닝
문제 설명
0 이상의 두 정수가 문자열 a
, b
로 주어질 때, a + b
의 값을 문자열로 반환하는 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” |
입출력 예 설명
입출력 예 #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