반응형

오늘의 학습 키워드
- 정렬
- 해시 맵
문제 탐색하기
문제

문제 풀이 설계하기
해시 맵을 사용해서 학생의 인기도를 getOrDefault 메소드를 통해서 인기도를 맵에 저장하고
인기도를 내림차순으로 정렬한 뒤 인기도가 같은 학생들은 이름으로 정렬해서 출력하면 됩니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashMap<String, Integer> popular = new HashMap<>();
StringTokenizer st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()){
popular.put(st.nextToken(), 0);
}
for(int i=0; i<n; i++){
st = new StringTokenizer(br.readLine());
while(st.hasMoreTokens()){
String str = st.nextToken();
popular.put(str, popular.getOrDefault(str, 0)+1);
}
}
ArrayList<String> keySet = new ArrayList<>(popular.keySet());
keySet.sort(new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
int a = Integer.compare(popular.get(o2), popular.get(o1));
if(a == 0){
return o1.compareTo(o2);
}
return a;
}
});
for(String key : keySet){
System.out.println(key + " " + popular.get(key));
}
}
}
오늘의 회고
해시 맵과 정렬에 대해 좀 더 알 수 있었습니다.
반응형
'TIL(Today I Learned)' 카테고리의 다른 글
99클럽 코테 스터디 17일차 TIL + LeetCode 1385 (Find the Distance Value Between Two Arrays, java) (0) | 2025.04.22 |
---|---|
99클럽 코테 스터디 16일차 TIL + LeetCode 349 (Intersection of Two Arrays, java) (0) | 2025.04.21 |
99클럽 코테 스터디 14일차 TIL + 백준29723 (브실이의 입시전략, java) (0) | 2025.04.17 |
99클럽 코테 스터디 13일차 TIL + 백준 1181 (단어 정렬, java) (0) | 2025.04.16 |
99클럽 코테 스터디 12일차 TIL + 백준 25757 (임스와 함께하는 미니게임, java) (0) | 2025.04.15 |