코딩테스트/백준
[Java] 백준 1181번 : 단어 정렬
Eungae-D
2024. 4. 11. 12:45
728x90
문제
1181번: 단어 정렬
첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다.
www.acmicpc.net
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static int N;
private static String[] arr;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
N = Integer.parseInt(br.readLine());
arr = new String[N];
for(int i = 0 ; i < N; i++){
arr[i] = br.readLine();
}
}
//과정
public static void process() {
Arrays.sort(arr, new Comparator<String>(){
@Override
public int compare(String o1,String o2){
if(o1.length() == o2.length()){
return o1.compareTo(o2);
}else{
return o1.length()-o2.length();
}
}
});
sb.append(arr[0]).append("\n");
for(int i = 1 ; i < N; i++){
if(arr[i-1].equals(arr[i])) continue;
sb.append(arr[i]).append("\n");
}
System.out.println(sb.toString());
}
public static void main(String[] args) throws Exception {
input();
process();
}
}