import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
br.close();
String stringA = st.nextToken();
String stringB = st.nextToken();
int length = Math.max(stringA.length(), stringB.length());
int[] arrayA = new int[(length + 1)];
int[] arrayB = new int[(length + 1)];
for (int i = (stringA.length() - 1), index = 0; i >= 0; i--, index++) {
arrayA[index] = stringA.charAt(i) - '0';
}
for (int i = (stringB.length() - 1), index = 0; i >= 0; i--, index++) {
arrayB[index] = stringB.charAt(i) - '0';
}
for (int i = 0; i < length; i++) {
int sum = arrayA[i] + arrayB[i];
arrayA[i] = sum % 10;
arrayA[(i + 1)] += sum / 10;
}
StringBuilder sb = new StringBuilder();
if (arrayA[length] != 0) sb.append(arrayA[length]);
for (int i = (length - 1); i >= 0; i--) {
sb.append(arrayA[i]);
}
System.out.println(sb);
}
}
본격 쉬운문제 어렵게 풀기(?)
사실 Java 클래스 중 매우 큰 정수를 사용할 때 쓰라고 만들어둔 BigInteger가 있다.
그런데 다른 풀이 중에 알고리즘 문제니까 기왕 구현해보는게 좋지 않을까라는 말이있어서 뭔가에 이끌려 다시 풀게되었다.
문자열로 저장해놓고 역순으로 숫자배열에 담는다.
이 때 배열의 크기는 덧셈에 의해 올림이 발생하면 한칸이 더 필요해서 두 수 중 긴 값보다 한 칸 크도록 만들었다.
그리고 배열에 담아놓고 첫번째 칸부터 계산하고 역순으로 담았으니 출력할 때도 역순으로 출력하였다.
올림이 발생하지 않았을 경우 0이 출력되므로 마지막 칸의 값이 0이 아닌 경우 출력하도록 하면 끝!