알고리즘 : 문자열
큰 수 A+B
시간 제한 | 메모리 제한 |
1초 | 256MB |
문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
출력
첫째 줄에 A+B를 출력한다.
예제 입력 1
9223372036854775807 9223372036854775808
예제 출력 1
18446744073709551615
출처
import java.io.*;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
Main main = new Main();
main.start();
}
private void start() throws Exception {
//System.setIn(new FileInputStream("src/test1/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String in = br.readLine();
StringTokenizer st = new StringTokenizer(in, " ");
String num1 = st.nextToken();
String num2 = st.nextToken();
bw.write(add(num1, num2));
br.close();
bw.close();
}
private String add(String num1, String num2) {
//System.out.println(String.format("%s + %s", num1, num2));
int f = 0;
StringBuffer result = new StringBuffer();
for (int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0; i--, j--) {
int target1 = i < 0 ? 0 : num1.charAt(i) - '0';
int target2 = j < 0 ? 0 : num2.charAt(j) - '0';
int addResult = target1 + target2 + f;
//System.out.println(String.format("%d + %d = %d", target1, target2, addResult));
result.insert(0, addResult % 10);
f = addResult / 10;
}
if(f > 0) {
result.insert(0, f);
}
return result.toString();
}
}
시간 | 메모리 |
152ms | 15024KB |
출처
'알고리즘' 카테고리의 다른 글
투포인터/수들의 합 5 - 백준 2018번 (0) | 2021.11.07 |
---|---|
문자열/문자열 압축 - 2020 KAKAO BLIND RECRUITMENT (0) | 2021.10.17 |
정렬/나이순 정렬 백준 10814번 (0) | 2021.10.03 |
기본정수론/피보나치 수 백준 2747번 (0) | 2021.10.03 |
문자열/조합 0의 개수 백준 2004번 (0) | 2021.09.26 |