백준 10757번 큰 수 A+B

 Description

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 Input

첫째 줄에 A와 B가 주어진다. (0 < A,B < 1010000)

 Output

첫째 줄에 A+B를 출력한다.

 Solution

// 내 풀이

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);
    }
}

 Feedback

  • BigInteger를 사용하면 간단하게 풀 수 있다.
// 다른 사람 풀이 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);


	}
}
  • python은 그냥 더하기만 해도 된다.
# 다른 사람 풀이 2

print(sum(map(int,input().split())))

Source