코딩 테스트/백준

[백준2908/JAVA] 상수

리져니 2021. 7. 9. 01:23

문제

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

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

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

입력

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

출력

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

예제 입력 

734 893

예제 출력  

437

출처

Contest > Croatian Open Competition in Informatics > COCI 2009/2010 > Contest #3 1번


코드

import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;
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(), " ");

        String strA = st.nextToken();
        String strB = st.nextToken();

        String tmpA = "";
        String tmpB = "";

        for(int i=2;i>=0;i--){
            tmpA += strA.charAt(i);
            tmpB += strB.charAt(i);
        }

        int a = Integer.parseInt(tmpA);
        int b = Integer.parseInt(tmpB);

        System.out.print(a > b ? a:b);
    }
}

 

풀이

String tmpA = "";
String tmpB = "";

for(int i=2;i>=0;i--){
	tmpA += strA.charAt(i);
	tmpB += strB.charAt(i);
}

입력받은 문자열의 마지막 인덱스 부터 처음 인덱스 까지 접근하여 charAt()을 통해 해당 요소의 값(문자)을 '+' 연산자를 이용하여 결합한다

* 최종적으로는 입력받은 문자열의 역을 반환하게됨

 

int a = Integer.parseInt(tmpA);
int b = Integer.parseInt(tmpB);

System.out.print(a > b ? a:b);

입력받은 문자열의 역을 정수로 형변환을 한뒤, 삼항연산자를 통해 두 값을 비교하여 큰 값을 출력하도록 한다.

 

결과

 

 


StringBuilder().reverse()를 사용하는 방법

import java.io.BufferedReader;
import java.io.IOException;
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()," ");
        
		int A = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
		int B = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString());
		
		System.out.print(A > B ? A:B);
		
	}
}

 

 

 

Reference

https://st-lab.tistory.com/66

728x90

'코딩 테스트 > 백준' 카테고리의 다른 글

[백준3052/JAVA] 나머지  (0) 2021.07.09
[백준2920/JAVA] 음계  (0) 2021.07.09
[백준2675/JAVA] 문자열 반복  (0) 2021.07.09
[백준2577/JAVA] 숫자의 개수  (0) 2021.07.08
[백준2526/JAVA] 최댓값  (0) 2021.07.05