Backward numbers are numbers written in ordinary Arabic numerals but the order of the digits is reversed. The first digit becomes the last, and vice versa. For example, the number 1245 becomes 5421. Note that all leading zeroes are omitted. This means that if the number ends with a zero, the zero is lost by the reversal; e.g., 1200 gives 21. Also note that the reversed numbers never have any trailing zeroes.
We need to calculate with backward numbers and your task is to write a program that can add two backward numbers and output their sum as a backward number. Of course, the result is not unique (e.g., 21 could be 12, 120, or 1200 before the reversal). Thus, we assume that no zeroes were lost in the reversal (e.g., we assume that the original number was 12).
입력
The input consists of N cases. The first input line contains only the integer N, and we assume that N > 0. The follow the cases. Each case consists of exactly one line with two non-negative integers separated by a space. These are the reversed numbers you are to add.
We assume that all numbers are in the range 0 ≤ n < 109.
출력
For each case, print exactly one line containing only one integer—the backward sum of the two backward numbers. Omit any leading zeroes in the output.
코드
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuffer sb;
int N = Integer.parseInt(br.readLine());
for(int i = 0; i < N; i++){
String[] arr = br.readLine().split(" ");
for(int j = 0; j <2; j++){
sb = new StringBuffer(arr[j]);
arr[j] = sb.reverse().toString();
}
int sum = Integer.parseInt(arr[0]) + Integer.parseInt(arr[1]);
String sumSt = Integer.toString(sum);
sb = new StringBuffer(sumSt);
System.out.println(Integer.parseInt(sb.reverse().toString()));
}
}
}
풀이
이 문제는 두 수를 입력받고 각각 reverse 한 뒤 더해서 다시 reverse 한 값을 출력하는 것이다.
예를 들어 예제 입력 1에 있는 24와 1의 경우, 24를 거꾸로 바꿔서 42로, 1을 거꾸로 바꿔서 1로 해놓고 더하면 43이 된다. 그리고 다시 거꾸로 바꾸면 34가 된다. 즉 답은 34가 된다.
또 다른 예시인 794의 경우, 305를 바꾼 503과 794를 바꾼 497을 더해준다. 그럼 1000이 나오고, 1000을 거꾸로 바꾸면 0001이 된다. 이때 숫자의 경우 앞에 있는 0은 생략해주기 때문에 1이 나오게 된다.
숫자를 int로 입력받아서 거꾸로 돌리는 게 복잡할 것 같아 일단 입력을 다 String으로 받고, StringBuffer에 있는 함수인 reverse를 이용해 입력받은 숫자를 거꾸로 돌려주었다. 거꾸로 돌린 숫자들을 Integer.parseInt()로 숫자로 바꾼 후 더해주었고, 그걸 다시 String으로 변환해 reverse함수로 거꾸로 돌려주었다.
앞에 0이 있는 경우를 대비해 출력할 때 int로 형을 변환해서 출력해주었다.
'Algorithm > 백준' 카테고리의 다른 글
[백준][Java] 10816. 숫자 카드 2 (0) | 2024.02.05 |
---|---|
[백준][Java] 1541. 잃어버린 괄호 (0) | 2024.01.31 |
[백준][Python] 7360. Undercut (0) | 2022.04.30 |
[백준][Java] 1912. 연속합 (0) | 2022.04.28 |
[백준][Python] 19604. Art (0) | 2022.04.25 |