728x90
[백준] 큰 수 A + B (10757번 JAVA)
* Math.BigInteger 라이브러리를 사용하지 않는 방법
1. String 으로 문자열을 입력 받는다.
2. 배열에 역순으로 저장 한다.
3. 동일 자리 수를 더한다.
이때, value = A[i] + B[i] 라 칭한다.
A[i] = value % 10 // 해당 자리 수
A[i+1] += value / 10 // 올림 수
4. 계산 완료된 배열을 역순으로 출력한다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine());
String str_A = st.nextToken();
String str_B = st.nextToken();
int max_length = Math.max(str_A.length(), str_B.length());
// 올림을 방지해 자릿수 +1
int[] A = new int[max_length + 1];
int[] B = new int[max_length + 1];
// 역순으로 배열에 수 저장
for(int i = str_A.length() -1, index = 0; i>=0; i--, index ++){
A[index] = str_A.charAt(i) - '0';
}
for(int i = str_B.length() -1, index = 0; i>=0; i--, index ++){
B[index] = str_B.charAt(i) - '0';
}
// 덧셈
for(int i=0; i<max_length; i++){
int value = A[i] + B[i]; // value = i 자리 덧셉값
A[i] = value % 10; // 10으로 나눈 나머지 : 해당 자리값
A[i + 1] += value / 10; // 10으로 나눈 몫 : 올림 값
}
StringBuilder sb = new StringBuilder();
if(A[max_length] != 0){
sb.append(A[max_length]);
}
for(int i=max_length-1; i>=0; i--){
sb.append(A[i]);
}
bw.write(sb.toString());
bw.flush();
bw.close();
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 1746번 - 듣보잡 (JAVA) (0) | 2023.02.05 |
---|---|
[백준] 10816번 - 숫자 카드 2 (JAVA) (0) | 2023.02.04 |
[백준] -2진수 (2089번 JAVA) (0) | 2023.01.10 |
[백준] 1929번 : 소수 구하기 (0) | 2023.01.02 |
[백준] 1018번 : 체스판 다시 칠하기 [자바 / JAVA] (0) | 2023.01.01 |