문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
<작성 답안>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
int A = s.nextInt();
int B = s.nextInt();
int[] arr1 = new int[3];
int[] arr2 = new int[3];
int a, b;
arr1[0] = A/100;
arr1[1] = (A%100)/10;
arr1[2] = A%10;
a = arr1[0];
arr1[0] = arr1[2];
arr1[2] = a;
A = arr1[0]*100 + arr1[1]*10 + arr1[2];
arr2[0] = B/100;
arr2[1] = (B%100)/10;
arr2[2] = B%10;
b = arr2[0];
arr2[0] = arr2[2];
arr2[2] = b;
B = arr2[0]*100 + arr2[1]*10 + arr2[2];
if(A>B)
System.out.print(A);
else
System.out.print(B);
}
}
<정답>
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int A = in.nextInt();
int B = in.nextInt();
in.close();
A = Integer.parseInt(new StringBuilder().append(A).reverse().toString());
B = Integer.parseInt(new StringBuilder().append(B).reverse().toString());
System.out.print(A > B ? A : B);
}
}
<수정 보완>
-> 아예 reverse() 메서드를 써서 단박에 처리해버렸다.
메서드의 힘을 보여준다... 역시 아는 것이 힘이다.
-> 간결하게 출력문도 저렇게 3항문으로 간단하게 한문장으로 입력했다면 더 좋았을 것이다.
System.out.print(A > B ? A : B);
정답 및 풀이 출처 : https://st-lab.tistory.com/66
'📟java > 백준' 카테고리의 다른 글
백준 1712 자바 (1) | 2022.11.13 |
---|---|
백준 2941 자바 (0) | 2022.11.12 |
백준 1157 자바 (0) | 2022.11.11 |
백준 10809 자바 (0) | 2022.11.10 |
백준 11654 자바 (0) | 2022.11.10 |