▶ 문제
5648번: 역원소 정렬
모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요. 단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니
www.acmicpc.net
모든 원소가 양의 정수인 집합이 있을 때, 원소를 거꾸로 뒤집고 그 원소를 오름차순으로 정렬하는 프로그램을 작성하세요.
단, 원소를 뒤집었을 때 0이 앞에 선행되는 경우는 0을 생략해야합니다.
입력
첫 번째로 입력되는 건 n (1 ≤ n ≤ 106)으로 사용자가 뒤이어 입력할 원소값을 결정합니다. 입력하는 줄에는 하나의 원소값 뿐만 아니라 여러 원소값도 들어갈 수 있습니다.
단, 입력하는 정수는 1012을 넘어선 안 됩니다.
출력
출력문은 위 문제 내용에 나와있는 정렬방법으로 정렬하여 아래 예제 출력을 참고하여 출력하세요.
▶ 풀이
- JAVA
import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.Arrays;
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 n = Integer.parseInt(st.nextToken());
long[] arr = new long[n];
StringBuilder sb = new StringBuilder();
int idx = 0;
while(idx < n){
if(st.hasMoreTokens()){
String str = sb.append(st.nextToken()).reverse().toString();
arr[idx] = Long.parseLong(str);
sb.setLength(0); //sb 초기화
idx++;
}
else
st = new StringTokenizer(br.readLine());
}
Arrays.sort(arr);
for(int i = 0; i < n; i++)
sb.append(arr[i]).append("\n");
System.out.print(sb);
}
}
▶ 메모
- hasMoreTokens(): StringTokenizer 클래스 객체에서 다음에 읽어 들일 token이 있으면 true, 없으면 false를 리턴한다.
- reverse(): 메소드를 호출한 객체(문자열)를 거꾸로 뒤집어 리턴해준다.
여기서는 StringBuilder 객체를 리턴(StringBuffer로 선언 시, StringBuffer 객체 리턴)하기 때문에, toString() 메소드와 함께 사용한다.
'코딩테스트 > 백준(BOJ)' 카테고리의 다른 글
| [백준] 28279번: 덱 2(JAVA) (0) | 2023.09.17 |
|---|---|
| [백준] 14719번: 빗물(JAVA) (1) | 2023.09.16 |
| [백준] 1141번: 접두사(JAVA) (0) | 2023.09.10 |
| [백준] 20291번: 파일 정리(JAVA) (0) | 2023.09.09 |
| [백준] 2622번: 삼각형만들기(JAVA) (1) | 2023.09.09 |