Algorithm
[백준] 2908 번 - 상수 (Java)
haehyun
2022. 2. 7. 16:27
728x90
문제
https://www.acmicpc.net/problem/2908
2908번: 상수
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두
www.acmicpc.net
코드
1. StringBuffer 타입으로 처리하는 방법
StringTokenizer로 두 정수를 토큰으로 분리한 뒤, 각 문자열을 거꾸로 뒤집은 결과를 int 타입으로 파싱한다.
import java.util.Scanner;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.nextLine();
StringTokenizer st = new StringTokenizer(s, " ");
int a = Integer.parseInt(new StringBuffer(st.nextToken()).reverse().toString());
int b = Integer.parseInt(new StringBuffer(st.nextToken()).reverse().toString());
System.out.print(Math.max(a, b));
}
}
2. int 타입으로 처리하는 방법
정수 두 개를 차례로 입력받는다. 각 정수의 자릿수를 뒤에서 부터 하나씩 잘라서 1의 자릿수를 100의 자릿수로, 100의 자릿수를 1의 자릿수로 가지는 새로운 int 값을 만든다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] num = new int[2];
num[0] = sc.nextInt();
num[1] = sc.nextInt();
int[] result = new int[2];
for(int i = 0; i < 2; i++){
for(int j = 100; j > 0; j /= 10){
result[i] += (num[i] % 10) * j;
num[i] /= 10;
}
}
System.out.print(Math.max(result[0], result[1]));
}
}
= 두 방법 모두 결과는 정답이나, 본 문제가 [문자열 처리] 문제로 분류되어 있는 만큼, StringTokenizer, StringBuffer를 사용하는 첫번째 방법을 이용하기를 권장.
728x90