728x90
반응형
문제
정답 풀이
import java.io.BufferedReader;
import java.io.IOException;
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 strA = st.nextToken();
String strB = st.nextToken();
// 제일 긴 길이를 찾아서
int maxLength = Math.max(strA.length(), strB.length());
// 배열을 만들고
int[] A = new int[maxLength+1];
int[] B = new int[maxLength+1];
// 값을 뒤에서부터 배열에 저장
// 그래야 덧셈 계산할 때 편해요
int index = 0;
for(int i = strA.length()-1; i>=0; i--, index++){
A[index] = strA.charAt(i) - '0'; // 아스키코드 - '0'해야 제대로 값 나옴
}
index = 0;
for(int i = strB.length()-1; i>=0; i--, index++){
B[index] = strB.charAt(i) - '0';
}
// 덧셈 for문
for(int i = 0; i < maxLength; i++){
int value = A[i] + B[i]; // 더해서
A[i] = value % 10; // 나머지는 그대로 저장
A[i+1] += value/10; // 몫은 다음 덧셈할 거에 더해주기
}
// 거꾸로 계산했으니까 다시 돌려줘야함
StringBuilder sb = new StringBuilder();
// 제일 앞의 숫자가 0이면 넣으면 안되니까 체크
if(A[maxLength] != 0) sb.append(A[maxLength]);
// 뒤에서부터 순서대로 넣어주고
for(int i = maxLength-1; i>=0; i--){
sb.append(A[i]);
}
System.out.print(sb); // 출력
br.close();
}
}
덧셈 연산을 만들어주면 됩니다!
주석에 설명 달아놨으니 보시고 편하게 댓글로 질문 주세요 :)
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[백준/Java] 2501번 약수 구하기 (0) | 2023.05.20 |
---|---|
[백준/Java] 5086번 배수와 약수 (0) | 2023.05.20 |
[백준/Java] 2869번 달팽이는 올라가고 싶다 (0) | 2023.05.20 |
[백준/Java] 1193번 분수찾기 (2) | 2023.05.19 |
[백준/Java] 2292번 벌집 (0) | 2023.05.18 |