
-Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class BOJ20920 {
public static void main(String[] args) throws IOException {
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
// 중복 제거로 값 받기
Map<String, Integer> wordsMap = new HashMap<>();
for (int i = 0; i < n; i++) {
String word = br.readLine();
// 문자열의 길이가 m이상일 경우에만 저장
if (word.length() >= m) {
wordsMap.put(
word,
wordsMap.getOrDefault(
word,
0
) + 1
);
}
}
// 정렬하기 위한 키셋 리스트
List<String> wordsList = new ArrayList<>(wordsMap.keySet());
Collections.sort(wordsList, (o1, o2) -> {
// 등장 갯수에 따른 정렬
int cntGap = wordsMap.get(o2).compareTo(wordsMap.get(o1));
if (cntGap != 0) {
return cntGap;
}
// 문자열 길이에 따른 정렬
int lenGap = o2.length() - o1.length();
if (lenGap != 0) {
return lenGap;
}
// 두 조건이 아닌 경우 사전순 정렬
return o1.compareTo(o2);
});
// 출력
StringBuilder answer = new StringBuilder();
for (String word : wordsList) {
answer.append(word).append("\n");
}
System.out.println(answer);
}
}
정렬 조건 때 실수와 3중 검사라 그 부분에 대해서 힌트를 조금 보고 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [백준/Java] 10870번 피보나치 수 5 (0) | 2025.12.27 |
|---|---|
| [백준/Java] 27433번 팩토리얼 2 (0) | 2025.12.27 |
| [백준/Java] 26069번 붙임성 좋은 총총이 (0) | 2025.12.27 |
| [백준/Java] 25192번 인사성 밝은 곰곰이 (1) | 2025.12.27 |
| [백준/Java] 1010번 다리 놓기 (0) | 2025.12.27 |