백준 알고리즘/Java
[백준] 1181. 단어 정렬 - Java
리버🐦🔥
2025. 4. 22. 02:08
https://www.acmicpc.net/problem/1181
⭐️ 중요 포인트
1. 정렬 시 원시 타입을 객체 타입으로 (ex. int -> Integer) 바꿔 정렬하는게 편하다.
2. Comparator를 선언하여 여러 종류의 정렬을 한 꺼번에 처리할 수 있다.
3. 이 때, public int compare()를 꼭 Override 해줘야 한다.
4. String.compareTo()를 사용하면 사전식 정렬을 할 수 있다.
5. 이 때 선언한 Comparator 객체는 "Collections.sort(정렬할 배열, Comparator 객체)" <- 이 부분에 사용된다.
import java.util.*;
import java.io.*;
public class P1181 {
static BufferedReader br;
static BufferedWriter bw;
static ArrayList<String> arr;
static int N;
static Comparator<String> comp = new Comparator<>() {
@Override
public int compare(String s1, String s2) {
if (s1.length() == s2.length()) {
// for (int i = 0; i < s1.length(); i++) {
// if (s1.charAt(i) == s2.charAt(i)) {
// continue;
// }
// return s1.charAt(i) - s2.charAt(i);
// }
return s1.compareTo(s2);
}
return s1.length() - s2.length();
}
};
static void init() throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
bw = new BufferedWriter(new OutputStreamWriter(System.out));
arr = new ArrayList<>();
N = Integer.parseInt(br.readLine());
for (int i = 0; i < N; i++) {
arr.add(br.readLine());
}
}
static void solve() throws IOException {
Collections.sort(arr, comp);
}
public static void main(String[] args) throws IOException {
init();
solve();
for (int i = 0; i < arr.size(); i++) {
if (i == 0) {
bw.write(arr.get(i) + "\n");
} else if (!arr.get(i).equals(arr.get(i - 1))) {
bw.write(arr.get(i) + "\n");
}
}
bw.flush();
bw.close();
br.close();
}
}