- 큰 수의 합 구하기
https://www.acmicpc.net/problem/10757
1. 문제
두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.
2. 문제 접근
- 두 개의 수를 입력받는다.
- 두 개의 수의 합을 출력한다. -> 단, 두 수의 범위는 0 < A,B < 1010000
핵심!
- 자바에서 정수 자료형 중 가장 메모리가 큰 것은 long이다. 16byte로 1010000 의 범위의 수를 저장하지 못한다. 고로, 문자열로 합을 구해보자. 아래의 코드는 문자열의 문자 하나하나 접근하며 합을 구하는 방법이다. 입력 받은 두 수를 정수의 배열에 저장해두고 배열 인덱스 단위로 합을 구하여도 된다!!
3. 코드
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
String A = st.nextToken();
String B = st.nextToken();
StringBuilder sb = new StringBuilder();
int temp = 0;
int num = 0;
int i = (A.length() < B.length()) ? A.length() : B.length();
for(int j = 0; j<i;j++) {
num = (int)A.charAt(A.length()-1-j) -'0' + (int)B.charAt(B.length()-1-j)-'0' + temp;
temp = num/10;
num = num%10;
sb.append(num);
}
if(A.length()>B.length()) {
for(int j = i ; j<A.length();j++) {
num = (int)A.charAt(A.length()-1-j)-'0' + temp;
temp = num/10;
num = num%10;
sb.append(num);
}
}
else {
for(int j = i ; j<B.length();j++) {
num = (int)B.charAt(B.length()-1-j)-'0' + temp;
temp = num/10;
num = num%10;
sb.append(num);
}
}
if(temp==1) {
sb.append(1);
}
sb.reverse();
System.out.println(sb);
}
}
'백준 > JAVA' 카테고리의 다른 글
[백준/JAVA] 2775번 부녀회장이 될테야 (0) | 2023.01.19 |
---|---|
[백준/JAVA] 2839번 설탕 배달 (0) | 2023.01.19 |
[백준/JAVA] 1316번 그룹 단어 체커 (2) | 2023.01.19 |
[백준/JAVA] 2941번 크로아티아 알파벳 (0) | 2023.01.18 |
[백준/JAVA] 2908번 상수 (0) | 2023.01.18 |