주어진 알파벳 소문자로 이루어진 N개의 단어를 다음의 조건에 따라 정렬하는 프로그램을 작성해야 합니다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
ArrayList<String> words = new ArrayList<>();
// 단어를 ArrayList에 저장
for (int i = 0; i < N; i++) {
words.add(br.readLine());
}
// Comparator를 이용하여 정렬
Collections.sort(words, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() == s2.length()) {
return s1.compareTo(s2);
}
return Integer.compare(s1.length(), s2.length());
}
});
// 중복 제거를 위해 HashSet을 이용하여 정렬된 단어들을 저장
HashSet<String> uniqueWords = new HashSet<>(words);
// 정렬된 단어들을 출력
for (String word : words) {
if (uniqueWords.contains(word)) {
System.out.println(word);
uniqueWords.remove(word); // 중복 제거
}
}
}
}
이 코드는 주어진 N개의 단어를 조건에 맞게 정렬하는 기능을 수행합니다. 먼저 입력된 단어들을 ArrayList에 저장하고, Comparator를 이용하여 정렬을 수행합니다. 길이가 같은 경우에는 compareTo() 메서드를 이용하여 사전 순으로 정렬합니다. 그 후, 중복을 제거하면서 정렬된 단어들을 출력합니다.
