1일 1백준

1일 1백준 : 10757 큰 수 A + B

gaonhae 2022. 6. 18. 14:03

1일 1백준 6일차, 오늘 푼 문제는 10757번 문제인 "큰 수 A + B"이다.

 

 

 

 

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

 

10757번: 큰 수 A+B

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

www.acmicpc.net

 

 

 

원래 "단계별로 풀어보기"의 문제 순서를 따르던 중이었는데, 앞의 두 문제가 꽤 어려워 시험기간인 지금 너무 많은 투자는 힘들겠다고 판단, 비교적 쉬워보였던 이 문제를 풀게 되었다.

 

이 문제는 해결책을 구상하기가 매우 아주 굉장히 정말 엄청 간단하다.

하지만 배열을 다루는 만큼 인덱싱에 신경을 써야한다.

그리고 자리 올림이 발생하는 경우와 아닌 경우에 처리 방식이 다르다는 점도 유의할 필요가 있다.

 

 

 

 

 

 

아래로 내리면 정답 코드가 나옵니다. 문제를 아직 풀지 않으신 분들은 주의해주세요.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

import java.util.Scanner;

public class pro10757 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        String a = sc.next();
        String b = sc.next();
        String str = "";
        int[] arr = new int[100000];

        StringBuffer asb = new StringBuffer(a).reverse();
        a = asb.toString();
        StringBuffer bsb = new StringBuffer(b).reverse();
        b = bsb.toString();

        String longer = a.length() >= b.length() ? a : b;


        for (int i = 0; i < a.length(); i++) {
            arr[i] += Integer.parseInt(String.valueOf(a.charAt(i)));
        }
        for (int i = 0; i < b.length(); i++) {
            arr[i] += Integer.parseInt(String.valueOf(b.charAt(i)));
        }

        for (int i = 0; i < longer.length(); i++) {
            if (arr[i] >= 10) {
                arr[i + 1]++;
                arr[i] -= 10;
            }

        }
        if(arr[longer.length()] > 0){
            for (int i = longer.length(); i >= 0; i--) {
                str += arr[i];
            }

        }
        else {

            for (int i = longer.length()-1; i >= 0; i--) {
                str += arr[i];
            }
        }

        System.out.println(str);


    }
}