📌 문제 탐색하기
- 단어의 갯수 N 입력
- 알파벳 소문자로 이루어진 단어 하나씩 입력
- 문자열의 길이가 오름차순으로 정렬됨
- 문자열의 길이가 같을 경우 알파벳 순으로
- 중복되는 경우는 한번만
📌 코드 설계하기
- 어떠한 규칙에 있어서 정렬 Arrays.sort 메소드에 Comparator 을 구현 ->시간복잡도는 O(nlogn)
- 1순위 단어 길이순 2순위 사전 순
->compare 메소드에서 if 조건문을 통해 단어길이를 비교후 같을 경우 사전순으로 정렬하도록 하고 그 외에는 단어 길이순으로 정렬.
- BufferedReader + StringBuilder 성능 개선
📌 시도 회차 수정 사항
📌 정답 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
public class BJ_1181 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
String[] arr = new String[n];
for (int i = 0; i < n; i++) {
arr[i] = br.readLine();
}
Arrays.sort(arr, new Comparator<String>() {
public int compare(String o1, String o2) {
if (o1.length() == o2.length()) return o1.compareTo(o2);
else return o1.length() - o2.length();
}
});
StringBuilder sb = new StringBuilder();
sb.append(arr[0]).append('\n');
for (int i = 1; i < n; i++) {
if (arr[i].equals(arr[i - 1])) {
continue;
}
sb.append(arr[i]).append('\n');
}
System.out.println(sb);
}
}