문자열을 정렬하는 문제이다.sort의 comparator를 구현해주면 된다.
import java.util.*;
import java.io.*;
public class Main {
public static void main(String args[]) throws IOException {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.nextLine();
String[] arr = new String[N];
for(int i=0;i<N;i++){
arr[i]=sc.nextLine();
}
// Arrays.sort(arr,(e1,e2)->{
// if(e1.length()==e2.length())
// return e1.compareTo(e2);
// else
// return e1.length()-e2.length();
// });
Arrays.sort(arr,new Comparator<String>(){
public int compare(String s1,String s2){
if(s1.length()==s2.length())
// 문자열을 사전순으로 정렬해준다.
return s1.compareTo(s2);
else
return s1.length()-s2.length();
}
});
//일단 첫번째거를 따로 출력하고
System.out.println(arr[0]);
// 앞에거를 기준으로 뒤어거를 비교해서 String이 똑같은지를 검사한다.
for(int i=1;i<N;i++){
if(!(arr[i].equals(arr[i-1])))
System.out.println(arr[i]);
}
}
}