Notice
Recent Posts
Recent Comments
Link
천리길도 한걸음부터
Day3. 단어 정렬 본문
문제
https://www.acmicpc.net/problem/1181
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.sql.Array;
import java.util.*;
public class Day3 {
public static void main(String[] args) throws IOException {
// 1. 입력 받기 위한 준비
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 2. 영어단어 갯수
int N = Integer.parseInt(br.readLine());
// 3. 단어 저장할 HashSet 선언 (중복x)
Set<String> set = new HashSet<>(); // HashSet은 Key-value가 아니라, 값만 저장하는 Set 구조 -> 제네릭 타입은 한 개만 써야 한다
//List<String, String> set = new HashSet<>(); -> 노우!
// 4. 영어 단어 입력받기
for (int i=0; i<N; i++) {
String str = br.readLine(); // 한 줄에 하나씩 단어 들어옴...
set.add(str);
}
//StringTokenizer st = new StringTokenizer(br.readLine()); -> 한 줄에 여러 단어 있을때만 필요..
// 5. List로 변환 후 정렬
List<String> list = new ArrayList<>(set);
Collections.sort(list, (a, b) -> {
// 1차 기준
if ( a.length() != b.length()) return a.length() - b.length();
// 2차 기준
return a.compareTo(b);
});
// 6. 출력
StringBuilder sb = new StringBuilder();
for (String word : list) {
sb.append(word).append("\n");
}
System.out.println(sb);
}
}
✔ Collcetions.sort() : Java의 컬렉션 프레임워크에서 제공하는 공식 유틸리티 메서드
✔ Collections.sort() 기본형
Collections.sort(리스트);
- 기본 정렬 기준 : 오름차순 (Comparable 기준)
숫자 -> 작은 것부터
문자열 -> 알파벳 순서
✔ 커스텀 정렬 (Comparator 사용)
Collections.sort(리스트, (a, b) ->
// 정렬 기준 정의
}
✔ 대표예시
숫자 오름차순 Collections.sort(list);
숫자 내림차순 Collections.sort(list, (a, b) -> b - a)
문자열 길이순 Collections.sort(list, (a, b) -> a.length - b.length())
문자열 길이순 + 알파벳순 (a, b) -> a.length() != b.length? a.length() - b.length() : a.compareTo(b)
Map의 key/value를 정렬하려면 List로 변환 후 이걸 써야 함~~~
✔ 외울거
Collections.sort(list, (a, b) -> {
// 1차 기준
if (a.length() != b.length()) {
return a.length() - b.length();
}
// 2차 기준
return a.compareTo(b);
});
'20일 1일 1코테' 카테고리의 다른 글
Day4. 두 수의 합 (0) | 2025.05.04 |
---|---|
Day2. 숫자 카드2 (0) | 2025.05.01 |
Day1. 숫자 정렬 문제 (0) | 2025.05.01 |