| 문제 | 1181번 : 단어정렬 |
| 문제링크 | https://www.acmicpc.net/problem/1181 |
| 난이도 | S5 |
| 언어 | Java |
| 분류 | 문자열, 정렬 |


📌 최종 정답 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashSet;
import java.util.Set;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// 단어의 개수 입력
int n = Integer.parseInt(br.readLine());
// 중복 제거하면서 입력
Set<String> inputs = new HashSet<String>();
for(int i=0; i<n; i++) {
inputs.add(br.readLine());
}
// 리스트로 변환하여 정렬
ArrayList<String> result = new ArrayList<String>(inputs);
// 정렬
Collections.sort(result, 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 : result) {
bw.write(s + "\n");
}
bw.flush();
bw.close();
}
}
📌 구해야 하는 정답
- 길이가 짧은 것부터, 같으면 사전 순으로 정렬하여 출력
📌 코드 설계하기
1. 단어의 개수 입력
2. 중복 제거하면서 단어 입력
3. 정렬
- 길이가 짧은 문자열이 앞에 오도록
- 길이가 같을 경우 사전 순으로
4. 출력하기

'Programming > Algorithm' 카테고리의 다른 글
| [알고리즘/백준] 25305번 : 커트라인(Java) (0) | 2025.05.23 |
|---|---|
| [알고리즘/백준] 5635번 : 생일(Java) (1) | 2025.05.22 |
| [알고리즘/백준] 10814번 : 나이순 정렬(Java) (1) | 2025.05.20 |
| [알고리즘/백준] 2309번 : 일곱 난쟁이(Java) (1) | 2025.05.19 |
| [알고리즘] 21일 챌린지 후기 - 새싹반 (2) | 2025.04.28 |
