문제 보기
문제 분석
[요약]
주어진 두 숫자를 뒤집어 더한 값을 뒤집어 출력한다.
[푸는 과정]
그냥 답을 도출해 내는것 까지는 어렵지 않았다. 다만 근 한 달만에 푸는 문제라 처음부터 효율적인 코드를 짜내지 못했다. 일단 생각나는대로 코드를 치고 답 제출까지 확인한 뒤 참고할 만한 코드를 구글링 해 보았다.
우선 나는 그냥 두 수를 Scanner로 String 형태로 입력 받아서 사용하였다. 반복문을 이용해 각 숫자의 자릿수를 바꿔준 뒤 덧셈을 하고 덧셈을 한 결과도 반복문을 이용해 자릿수를 뒤집어 주었다.
구글링을 한 코드는 두 수를 Scanner로 int 형태 그대로 입력 받는다. 반복문을 이용해 숫자를 10으로 나눈 나머지를 차례로 열거하여 숫자를 뒤집어 준다. 해당 작업은 사실 반복되는 작업이다. 그렇기에 함수로 따로 빼 주어 코드 길이를 줄였다.
코드 보기
[내 코드]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] numbers = scanner.nextLine().split(" ");
int[] numRevArray = new int[numbers.length];
for(int i=0; i<numbers.length; i++){
String[] number = numbers[i].split("");
String numRevStr = "";
for(int j=number.length-1; j>=0; j--){
numRevStr += number[j];
}
numRevArray[i] = Integer.parseInt(numRevStr);
}
int total = 0;
for(int i : numRevArray){
total += i;
}
String[] totalStrArray = String.valueOf(total).split("");
String totalStr = "";
for(int i=totalStrArray.length-1; i>=0; i--){
totalStr += totalStrArray[i];
}
System.out.println(Integer.parseInt(totalStr));
}
}
[참고 코드]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int X = scanner.nextInt();
int Y = scanner.nextInt();
scanner.close();
int x = Rev(X);
int y = Rev(Y);
int result = Rev(x + y);
System.out.println(result);
}
private static int Rev(int N) {
String str = "";
while(N > 0){
str += N % 10;
N /= 10;
}
return Integer.parseInt(str);
}
}
참고 블로그: https://airzinc.tistory.com/entry/%EB%B0%B1%EC%A4%80-1357-JAVA
백준 1357 뒤집힌 덧셈 (JAVA)
1357번: 뒤집힌 덧셈 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일
airzinc.tistory.com
What I learned today... is...
사실 이 문제로 포스팅을 하는 이유인데..
1) String + 숫자 = String
2) Scanner로 입력 받을 시 공백을 알아서 구분해 준다.
특히 1번같은 경우는 누가 물어본다면 대답이 가능하지만 막상 코드 칠때는 까먹는 사실인 것 같아서 스스로 remind를 위해 포스팅을 해 본다.