주어진 문자열 배열을 정렬하는 문제이다.
일반적인 사전순서 문자열 정렬 이외에 문자열 길이에 따른 배열이 필요하다.
import java.util.*;
import java.util.stream.Collectors;
public class Main {
private ArrayList<String> list = new ArrayList<>();
public void solve() {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
for (int i = 0; i < n; i++)
list.add(scanner.next());
list.sort(
new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
if(o1.length() > o2.length())
return 1;
else if(o1.length() == o2.length()){
return Integer.compare(o1.compareTo(o2), 0);
}
else
return -1;
}
}
);
list = (ArrayList<String>) list.stream().distinct().collect(Collectors.toList());
for (String s : list) System.out.println(s);
}
public static void main(String[] args) {
Main main = new Main();
main.solve();
}
}