문제
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 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
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 |