TIL(Today I Learned)
99클럽 코테 스터디 15일차 TIL + 백준25325 (학생 인기도 측정, java)
zincah
2025. 4. 20. 00:39
반응형
오늘의 학습 키워드
- 정렬
- 해시 맵
문제 탐색하기
문제
문제 풀이 설계하기
해시 맵을 사용해서 학생의 인기도를 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));
}
}
}
오늘의 회고
해시 맵과 정렬에 대해 좀 더 알 수 있었습니다.
반응형