ALGORITHM

[JAVA] 백준 2098번- 상수

연듀 2022. 7. 27. 11:05

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

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net

 

 

방법1

import java.util.*;

public class Main {

    public static void main(String[] args) {
        Scanner sc=new Scanner(System.in);
        int answer=0;

        for(int i=0; i<2; i++){
            int n= sc.nextInt();
            int reverse=0;

            while(n!=0){
                int digit=n%10;
                reverse=reverse*10+digit;
                n /= 10;
            }
            answer = Math.max(answer, reverse);
        }
        System.out.println(answer);
    }
}

 

while문으로 자릿수를 바꿔주는 방법으로 풀었는데 StringBuilder를 사용하면 더 간단하다.

 

 

방법2

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

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(), " ");

       int a = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
       int b = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());

        System.out.println(Math.max(a,b));
    }
}

 

StringBuilder 클래스에 있는 reverse()라는 메소드를 사용한다. 

StringBuilder 를 생성해 저장된 수를  reverse()를 이용해 뒤집는다. 그리고 문자열로 반환시키기 위해 toString()

을 한후, int로 타입을 변경한다.

 

방법3

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;

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(), " ");

       int[] num = new int[2];
       for(int i=0; i<2; i++){
           String str = st.nextToken();
           num[i] = (str.charAt(2)-'0') * 100 + (str.charAt(1)-'0') * 10 + (str.charAt(0)-'0');
       }
        System.out.println(Math.max(num[0], num[1]));
    }
}

 

 

문제에서 주어진 숫자가 세자리 수로 고정이 되어있으므로, 한자리수씩 가져와 int형으로 바꾼다음 자리수를 바꿔줄수도 있다.