단계별로 풀어보기 > 정렬 > 단어 정렬
https://www.acmicpc.net/problem/1181
알파벳 소문자로 이루어진 N개의 단어가 주어질 때, 다음을 바탕으로 정렬하라.
1. 길이가 짧은 단어부터
2. 길이가 같다면 사전 순서대로

Arrays.sort를 이용하여 정렬한다.
단어의 길이가 같다면 compareTo를 이용하여 사전 순으로 정렬한다.
import java.io.*;
import java.util.Arrays;
import java.util.StringTokenizer;
public class 단어_정렬 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
String[] arr = new String[N];
for(int i = 0; i<N; i++){
arr[i] = br.readLine();
}
Arrays.sort(arr,(e1,e2) -> {
if(e1.length() == e2.length()){
return e1.compareTo(e2);
}else{
return e1.length() - e2.length();
}
});
StringBuilder sb = new StringBuilder();
sb.append(arr[0]).append("\n");
for(int j = 1; j<N; j++){
if(!arr[j].equals(arr[j-1])){
sb.append(arr[j]).append("\n");
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
Review
import java.io.*;
import java.util.Arrays;
public class 단어_정렬_review {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
String[] arr = new String[N];
for(int i = 0; i<N; i++){
arr[i] = br.readLine();
}
Arrays.sort(arr, (s1,s2) -> {
if(s1.length() == s2.length()){
return s1.compareTo(s2);
}else{
return s1.length() - s2.length();
}
});
StringBuilder sb = new StringBuilder();
sb.append(arr[0] + "\n");
for(int j = 1; j<N; j++){
if(!arr[j].equals(arr[j-1])){
sb.append(arr[j] + "\n");
}
}
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
compareTo 메소드를 통해 사전순으로 정렬할 수 있다.

Review
