Programing/BaekJoon
[JAVA] 백준 1181 : 단어정렬
블스뜸
2025. 3. 29. 15:05
HashSet을 통해 중복 내용을 제거
Arrays.sort를 통해 정렬을 하는데 Comparator를 익명메소드로 구현하여 정렬 기준으로 만들었다
import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.HashSet;
// 백준 1181 : 단어정렬
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
HashSet<String> word = new HashSet<>();
ArrayList<String> temp = new ArrayList<>();
int count = Integer.parseInt(br.readLine());
// HashSet을 이용해 입력과 동시에 중복 삭제
for (int i = 0; i < count; i++){
String str = br.readLine();
if(word.add(str)){
temp.add(str);
}
}
String[] words = temp.toArray(new String[0]);
// Comparator를 이용해 문자열 길이를 비교했을 때 s2가 s1보다 짧으면 양수를 반환 = Sort를 통해 자리를 바꿈
// 하지만 길이가 같으면 compareTo <- 유니코드를 통해 문자하나하나의 우선순위를 비교 s2가 더 작은 문자열이면 양수를 반환 = Sort를 통해 자리를 바꿈
Arrays.sort(words, new Comparator<String>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() != s2.length()) {
return s1.length() - s2.length();
} else {
return s1.compareTo(s2);
}
}
});
for (String s : words) {
bw.write(s);
bw.newLine();
}
bw.flush();
bw.close();
br.close();
}
}