문제
1 ~ 10^100의 두 수 A, B가 입력될 때 두 수의 합을 구하는 문제
풀이방법
최대 100자리 까지 입력으로 들어오기 때문에 int나 long으로 계산할 수 없다.
따라서 배열로 각 자리 수를 입력받고 한 자리씩 계산해준다.
이 때, 각 자리수를 계산할 때 발생하는 올림수를 처리해 준다.
소스코드
package samsung;
import java.util.*;
public class s_3260 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int test = sc.nextInt();
for(int t = 1; t <= test; t++) {
String a = sc.next();
String b = sc.next();
int l = (a.length() > b.length()) ? a.length() : b.length();
int[] c = new int[l + 1];
int[] d = new int[l + 1];
int[] e = new int[l + 1];
for(int i = 0; i <= l; i++) {
if(i >= a.length()) {
c[l - i] = 0;
}
else {
c[l - i] = a.charAt(a.length() - i - 1) - '0';
}
}
for(int i = 0; i <= l; i++) {
if(i >= b.length()) {
d[l - i] = 0;
}
else {
d[l - i] = b.charAt(b.length() - i - 1) - '0';
}
}
int carry = 0;
int sum = 0;
for(int i = 0; i <= l; i++) {
sum = carry + c[l - i] + d[l - i];
if(sum > 9){
sum -= 10;
carry = 1;
}
else {
carry = 0;
}
e[l - i] = sum;
}
if(carry == 1)
e[0] = 1;
System.out.print("#" + t + " ");
if(e[0] == 1) {
for(int i = 0; i <= l; i++) {
System.out.print(e[i]);
}
}
else {
for(int i = 1; i <= l; i++) {
System.out.print(e[i]);
}
}
System.out.println();
}
}
}
'Problem Solving > SWEA' 카테고리의 다른 글
[SWEA] 6692. 다솔이의 월급 상자 (0) | 2020.02.23 |
---|---|
[SWEA] 5789. 현주의 상자 바꾸기 (0) | 2020.02.23 |
[SWEA] 5603. [Professional] 건초더미 (0) | 2020.02.22 |
[SWEA] 5601. [Professional] 쥬스 나누기 (0) | 2020.02.22 |
[SWEA] 5549. 홀수일까 짝수일까 (0) | 2020.02.22 |
댓글