티스토리 뷰

https://www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

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

www.acmicpc.net

 

이 문제에서 주어지는 큰 수는 자바가 제공하는 자료형으로는 담을 수 없기 때문에 배열을 사용하여 문제를 해결하였습니다.

 

1. 숫자 두 개를 뒷 숫자부터 하나씩 각각 배열에 저장합니다.

2. 앞에서부터 두 수를 더하고 10으로 나눈 나머지를 한쪽 배열에 저장합니다.

3. 10으로 나눈 몫은 다음 수를 더할 때 같이 더해줍니다. (올림)

4. 모든 자리의 수를 더한 다음 올림으로 올라온 수가 있다면 출력 문자에 1을 추가하고

5. 배열에 있는 수를 뒤에서부터 하나씩 출력 문자에 붙여줍니다.

6. 최종적으로 만들어진 문자열을 출력합니다.

 

자바 코드는 다음과 같습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] input = br.readLine().split(" ");

        int maxLength = Math.max(input[0].length(), input[1].length());

        int[] a = new int[maxLength];
        int[] b = new int[maxLength];

        // A 초기화
        for (int i = 0; i < input[0].length(); i++) {
            a[i] = Character.getNumericValue(input[0].charAt(input[0].length() - (i + 1)));
        }

        // B 초기화
        for (int i = 0; i < input[1].length(); i++) {
            b[i] = Character.getNumericValue(input[1].charAt(input[1].length() - (i + 1)));
        }

        // 덧셈
        int roundingUp = 0;
        for (int i = 0; i < maxLength; i++) {
            int sum = a[i] + b[i] + roundingUp;
            a[i] = sum % 10;
            roundingUp = sum / 10;
        }

        // 숫자로 변경
        StringBuilder sb = new StringBuilder();

        if (roundingUp != 0) sb.append(1);

        for (int i = maxLength - 1; i >= 0; i--) {
            sb.append(a[i]);
        }

        System.out.println(sb);
    }
}
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함