January 06, 2021
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)
첫째 줄에 A+B를 출력한다.
// 내 풀이
import java.util.Scanner;
public class Main {
private static int getCarry(int a, int b) {
if ((a + b) >= 10) {
return 1;
}
return 0;
}
public static int[] fullAdder(int a, int b, int carry) {
int sum = (a + b + carry) % 10;
int new_carry = getCarry(a + b, carry);
return new int[]{new_carry, sum};
}
public static String reverseString(String str) {
StringBuilder sb = new StringBuilder(str);
sb.reverse();
return sb.toString();
}
private static int getValue(String x, int i) {
if (x.length() <= i) {
return 0;
}
return Character.getNumericValue(x.charAt(i));
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String a = sc.next();
String b = sc.next();
a = reverseString(a);
b = reverseString(b);
int size = Math.max(a.length(), b.length());
int[] answer = new int[size + 1];
for (int i = 0; i < size; i++) {
int[] temp = fullAdder(getValue(a, i), getValue(b, i), answer[i]);
answer[i] = temp[1];
answer[i + 1] = temp[0];
}
String rev="";
for (int i = answer.length - 1; i >= 0; i--) {
rev+=answer[i];
}
if (answer[answer.length-1] == 0) {
rev = rev.substring(1, answer.length);
}
System.out.println(rev);
}
}
// 다른 사람 풀이 1
import java.io.*;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = br.readLine();
String tmp[] = num.split(" ");
BigInteger a = new BigInteger(tmp[0]);
BigInteger b = new BigInteger(tmp[1]);
BigInteger sum = a.add(b);
System.out.println(sum);
}
}
# 다른 사람 풀이 2
print(sum(map(int,input().split())))
Source