[백준-Java] 기본수학 1(#10757)

RedPanda·2021년 9월 15일
0

[알고리즘] Java

목록 보기
13/16

큰 수 A+B

첫줄에 입력된 두 숫자를 더하는 문제이다.
'큰 수'이기 때문에 +연산자로 간단하게 더할 수 있는 문제는 아니다.

과거에 학교 수업에서 해본 경험이 있기 때문에 기억을 살려서 풀었다. (이게 왜 난이도가 브론즈 5지...)

풀이 전략은 이러하다.

  1. 첫번째와 두번째, 그리고 결과에 대한 배열을 만든다.(배열 길이는 숫자가 큰 값을 기준으로)
  2. 0으로 모두 초기화시키고 일의 자리부터 배열에 넣는다.
  3. 각 자리 수를 더한다.
  4. 더하면서 올림(carry)가 있으면 더해준다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String N = br.readLine();
        String[] big_str = N.split(" ");
        StringBuffer sb_1 = new StringBuffer(big_str[0]);
        StringBuffer sb_2 = new StringBuffer(big_str[1]);
        String fst_num = sb_1.reverse().toString();
        String sec_num = sb_2.reverse().toString();
        // 문자열을 받아서 거꾸로 저장(일의 자리부터 계산해야 하기 때문)
        
        int arr_len = (fst_num.length() > sec_num.length()) ? fst_num.length() : sec_num.length(); // 배열 길이를 정해줌
        int[][] int_arr = new int[3][arr_len];

        for(int i = 0; i < arr_len; i++){
            int_arr[0][i] = 0; // 첫번째 숫자
            int_arr[1][i] = 0; // 두번째 숫자
            int_arr[2][i] = 0; // 결과값
        } // 배열 초기화
        for(int i = 0; i < fst_num.length(); i++){
            int_arr[0][i] = fst_num.charAt(i)- 48;
        } 
        for(int i = 0; i < sec_num.length(); i++){
            int_arr[1][i] = sec_num.charAt(i)- 48;
        }

        int carry = 0;
        for(int i = 0; i < arr_len; i++){
            int sum = carry + int_arr[0][i] + int_arr[1][i];
            if(sum > 9) carry = 1; //캐리가 있으면 다음 자릿수에서 같이 더해줌
            else carry = 0;
            int_arr[2][i] = sum%10;
        }
        if(carry == 1) System.out.print(1); // 마지막 자릿수에 대한 캐리값
        for(int i = arr_len-1; i >= 0; i--){
            System.out.print(int_arr[2][i]);
        }

    }
}

문자열을 뒤집지 않고 해보려했는데 잘 안돼서 생각보다 조금 더 걸렸다.

profile
끄적끄적 코딩일기

0개의 댓글