티스토리 뷰

Algorithm

[백준] B5 10757 큰 수 A + B (java)

코딩브론즈 2020. 12. 16. 22:58

www.acmicpc.net/problem/10757

 

10757번: 큰 수 A+B

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

www.acmicpc.net

 

풀이

 

1) sum 과 carry로 한 글자씩 계산

 

 

주의사항

 

1) 숫자가 길어서 int 나 long 으로 연산할 수 없다.

 

	package com.baekJoon;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.util.StringTokenizer;
 
public class BJ_B5_10757_큰수A더하기B {
	static BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
	static StringTokenizer tokens;
 
	public static void main(String[] args) throws NumberFormatException, IOException {
		input = new BufferedReader(new StringReader(src));
		tokens = new StringTokenizer(input.readLine());
		String A = tokens.nextToken();
		String B = tokens.nextToken();
 
		int size = Math.abs(A.length()- B.length());
		StringBuffer zeros = new StringBuffer();
		for(int i=0; i<size; i++) {
			zeros.append(0);
		}
		if(A.length() < B.length()) {
			zeros.append(A);
			cal(zeros,B);
		}else {
			zeros.append(B);
			cal(zeros,A);
		}
	}
 
	private static void cal(StringBuffer min, String max) {
		int sum = 0;
		int carry = 0;
		StringBuffer sb = new StringBuffer();
		for(int i=min.length()-1; i>=0; i--) {
			sum = min.charAt(i) + max.charAt(i) + carry  - '0'-'0';
			if(sum>9) {
				sum = sum-10;
				carry = 1;
			}else {
				carry = 0;
			}
			sb.append(sum);
		}
		if(carry == 1) {
			sb.append(1);
		}
		for(int i=sb.length()-1; i>=0; i--) {
			System.out.print(sb.charAt(i));
		}
	}
 
	static String src =
			"9223372036854775807 9223372036854775808";
}

 

 

후기

 

요즘 너무 머리아픈 문제만 풀다가 초심을 찾기위해 브론즈 문제를 풀어봤다.

현존하는 정수형 자료형으로 표현이 불가능할 때 문자열로 처리해야한다는 깨달음을 얻었다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
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 31
글 보관함