문제 설명
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 또는 배열 형태로의 풀이도 고려해볼만 합니다. 그러나 문자열끼리의 수학적 계산은 할 수 없어서 계산하기 전 일일이 정수형으로의 형변환을 해주어야 하므로 여간 코드가 복잡해지는 것이 아닐 것입니다.
'프로그래머스 > Lv. 0(코딩 기초 트레이닝)' 카테고리의 다른 글
[프로그래머스 코딩테스트] 수열과 구간 쿼리 2(Java) (0) | 2023.06.17 |
---|---|
[프로그래머스 코딩테스트] 그림 확대(Java) (0) | 2023.06.16 |
[프로그래머스 코딩테스트] 빈 배열에 추가, 삭제하기(Java) (0) | 2023.06.04 |
[프로그래머스 코딩테스트] 조건에 맞게 수열 변환하기 2(Java) (0) | 2023.06.03 |
[프로그래머스 코딩테스트] 배열 만들기 6(Java) (0) | 2023.06.03 |