실습/백준

상수 - 2908번 (Java 풀이)

chobyeonggyu03 2024. 7. 18. 02:14
반응형

문제

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

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

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

입력

첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

출력

첫째 줄에 상수의 대답을 출력한다.

예제 입력 1 복사

734 893

예제 출력 1 복사

437

예제 입력 2 복사

221 231

예제 출력 2 복사

132

예제 입력 3 복사

839 237

예제 출력 3 복사

938

 

 

 

이 문제를 처음봤을 때 가장 먼저 들었던 풀이방법은 StringBuilder와 reverse() 속성을 활용해 문자열 상태로 해당 숫자를 거꾸로 뒤집고, String 형태에서 int 형태로 바꾸어 논리연산자로 대소비교를 해주면 될 것 같다고 생각했기에 해당 방법으로 풀이를 진행해 보도록 하겠다.  또한 BufferedReader를 활용해보고 싶었기에 한 줄로 문자열을 입력받는 BufferedReader를 사용하기 위해 split()을 활용해 2개의 숫자를 문자열로 입력받아보았다.

 

 

 

package BAEKJOON_2908;

/*
 날짜: 2024.07.17.수
 내용: 백준 2908번 (상수)
 */

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class BAEKJOON_2908 {

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));	
		
		String str = br.readLine();
		
		if (str.equals("")) {								// 사용자가 문자열을 제대로 입력했는지 검증하기
			System.out.println("문자열을 입력하지 않으셨습니다.");				
			return;
		}
		
		String[] num = str.split(" ");									     	// BufferedReader를 활용하기 위해 Split()메서드를 써서 숫자2개를 문자열로 입력받기
	
		int A = Integer.parseInt(new StringBuilder(num[0]).reverse().toString());		// StringBuilder와 reverse속성을 활용해 문자열 상태에서 숫자를 뒤집기
		int B = Integer.parseInt(new StringBuilder(num[1]).reverse().toString());		// StringBuilder와 reverse속성을 활용해 문자열 상태에서 숫자를 뒤집기
		
		
		
		if( A >= B ){															// 거꾸로 뒤집힌 숫자의 대소 비교후 더 큰 수를 출력
			System.out.println(A);
		} else {
			System.out.println(B);
		}
		
		
		br.close();																// Reader 닫아주기
	}

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

반응형