알고리즘
백준 1302 베스트셀러
킨글
2024. 9. 16. 12:00
설명
- 데이터를 어떻게 저장할까에 대한 고민이 있었다.
- 처음에는 PriorityQueue를 사용해서 계속 재정렬하려고 했지만, 좋지 않은 방법인듯했다.
- 그래서 Map을 사용해서 데이터를 저장하고 순회하면서 +1을 해주는 방식으로 데이터를 저장했다.
- 결국에 다시 한번 for문을 돌면서 마지막 topCnt인 이름을 찾아내는 방식으로 진행했는데,
느릴줄 알았는데 다행히 100ms로 빠르게 속도가 나왔다.
코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
// 1244
public static void main(String[] args) throws IOException {
process();
}
private static void process() throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
Map<String, Integer> map = new HashMap<>();
int topCnt = 0;
for (int i = 0; i < N; i++) {
String input = br.readLine();
int cnt = map.getOrDefault(input, 0) + 1;
map.put(input, cnt);
if(topCnt < cnt) {
topCnt = cnt;
}
}
List<String> result = new ArrayList<>();
for(Map.Entry<String, Integer> entry : map.entrySet()) {
if(entry.getValue() == topCnt) {
result.add(entry.getKey());
}
}
Collections.sort(result);
bw.write(result.get(0));
bw.flush();
bw.close();
br.close();
}
}