https://www.acmicpc.net/problem/2908
방법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형으로 바꾼다음 자리수를 바꿔줄수도 있다.
'ALGORITHM' 카테고리의 다른 글
[JAVA] 알고리즘 : 정렬- 뮤직비디오(결정 알고리즘) (0) | 2022.07.28 |
---|---|
[JAVA] 알고리즘 : 정렬- 이분 검색 (0) | 2022.07.28 |
[JAVA] 알고리즘 : 정렬- 좌표 정렬(compareTo) (0) | 2022.07.27 |
[JAVA] 알고리즘 : 정렬- 장난꾸러기 (0) | 2022.07.27 |
[JAVA] 백준 1152번- 단어의 개수 (0) | 2022.07.26 |