Problem Solve

[백준 / BOJ] 2908번 : 상수 (Java)

black6765 2021. 3. 18. 00:24

문제

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

 

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

 

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.


전체 코드(By Java)

import java.io.*;
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());
        StringBuilder A = new StringBuilder(st.nextToken());
        StringBuilder B = new StringBuilder(st.nextToken());

        A.reverse();
        B.reverse();

        System.out.println(Math.max(Integer.parseInt(A.toString()), Integer.parseInt(B.toString())));

        br.close();
    }
}

해결 방법

  • 해당 코드의 구현은 크게 3부분으로 나누어진다.
    • StringTokenizer로 입력값을 공백으로 구분하여 StringBuilder 클래스의 A, B에 할당
    • A와 B를 StringBuilder의 메소드인 reverse()로 문자열을 반대로 뒤집음
    • 더 큰 값을 비교하여 출력 - Math.max() 사용