백준/JAVA

[백준/JAVA] 2908번 상수

누룽지맛치킨 2023. 1. 18. 09:57
  • 2개의 수를 뒤집어서 더 큰 수를 출력

https://www.acmicpc.net/problem/2908

1. 문제

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

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

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

2. 문제 접근

  • 2개의 값을 입력받는다.
  • 2개의 수를 뒤집고 비교를 한다. -> 3가지 방법을 제시하려고 한다!!
  • 더 큰 수를 출력한다.

핵심 코드!

  • 2개의 값을 입력받고 더 큰 수를 출력하는 것은 거의 대부분 같은 방법을 사용하여 표현할 것 이다. 하지만 2개의 수를 두집는 경우는 여기서 3가지 정도를 제시하겠다.

1) 두 개의 값을 정수로 취급하는 경우

2) 두 개의 값을 문자열로 취급하는 경우

  • 문자 하나하나 뒤에서 부터 새로운 문자열에 붙이는 경우
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st = new StringTokenizer(br.readLine());
    int[] num = new int[5];
          for(int i=0;i<2;i++) {
              num[i] = Integer.parseInt(st.nextToken());
              num[2] = num[i] / 100;
              num[3] = (num[i]/10) % 10;
              num[4] = num[i] % 10;
              num[i] = (num[4]*100) + (num[3]*10) + num[2];
          }
    StringBuilder sb1 = new StringBuilder();
    StringBuilder sb2 = new StringBuilder();
    for(int i=0;i<3;i++)
    {
      sb1.append(str1.charAt(2-i));
      sb2.append(str2.charAt(2-i));
    }
  • StringBuilder의 reverse()메소드를 이용하는 경우
    StringBuilder sb1 = new StringBuilder();
    StringBuilder sb2 = new StringBuilder();
    sb1.reverse();
    sb2.reverse();

3. 코드

import java.io.IOException;
import java.io.BufferedReader;
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());
        StringBuilder sb = new StringBuilder(st.nextToken());
        sb = sb.reverse();
        int num1 = Integer.parseInt(sb.toString());
        sb = new StringBuilder(st.nextToken());
        sb = sb.reverse();
        int num2 = Integer.parseInt(sb.toString());
        if(num1 > num2) {
            System.out.println(num1);
        }
        else {
            System.out.println(num2);
        }
    }
}