중복 제거가 문제 조건이어서 Set을 사용합니다.
중복을 제거하고 list로 옮긴다음 정렬 라이브러리를 사용할 생각으로 sort를 하였는데
단순히 정렬만 하면 예시 그대로 나오지 않게 됩니다.
그래서 Comparator을 조건에 맞게 수정했습니다.
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
HashSet<String> set = new HashSet<>();
int n = Integer.parseInt(reader.readLine());
//중복 값 제거 위해 set 사용
for(int i = 0; i < n; i++){
set.add(reader.readLine());
}
String[] array = set.stream().toArray(String[]::new);
//단어 순서 그대로 정렬하면 꼬임 단어 길이 조건 반영
Arrays.sort(array, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if(s1.length() > s2.length())
return 1;
else if (s1.length() < s2.length())
return -1;
else
return s1.compareTo(s2);
}
});
for (String i:array) {
writer.write(i + "\n");
}
writer.flush();
}
}