🔗 백준 1302 - 베스트셀러
문제

알고리즘 분류
- 자료 구조
- 문자열
- 정렬
- 해시를 사용한 집합과 맵 큐
풀이
1. 입력
- Map의 getOrDefault(key, defaultValue)는 key로 값을 가져오되, 매핑된 값이 없으면 기본값을 반환하는 함수.
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
HashMap<String, Integer> books = new HashMap<>();
int max = 0;
for(int i = 0 ; i<n; i++){
String key = br.readLine();
books.put(key, books.getOrDefault(key, 0) + 1);
max = Math.max(max, books.get(key));
}
2. 팔린 갯수 계산
- Map.Entry는 Map에 저장된 Key-Value 쌍의 객체이다.
List<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> entry : books.entrySet()){
if (entry.getValue() == max) {
list.add(entry.getKey());
}
}
3. 정렬 및 출력
Collections.sort(list);
System.out.println(list.get(0));
전체 코드
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> books = new HashMap<>();
int max = 0;
for(int i = 0 ; i<n; i++){
String key = br.readLine();
books.put(key, books.getOrDefault(key, 0) + 1);
max = Math.max(max, books.get(key));
}
List<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> entry : books.entrySet()){
if (entry.getValue() == max) {
list.add(entry.getKey());
}
}
Collections.sort(list);
System.out.println(list.get(0));
}
}