HashMap<String, Integer>을 이용해서 문제를 해결할 수 있습니다.
String에 책 제목을 넣고 Integer에 책의 개수를 누적합니다.
그 다음, max값에 가장 많이 팔린 책의 개수를 저장합니다.
그리고 answer에 처음으로 발견하고 가장 많이 팔린 책을 저장합니다.
또는 compareTo를 이용하여 현재 책(key)이 저장된 답(answer)보다 사전순으로 앞서는지 확인합니다.
compareTo 비교하기
음수: key < answer
양수: key > answer
0: key == answer
따라서 빈도 수가 가장 높으면서, 사전순으로 가장 앞선 책 제목을 찾아낼 수 있습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
HashMap<String, Integer> hashMap = new HashMap<>();
int max = 0;
String answer = "";
int N = Integer.parseInt(bufferedReader.readLine());
for(int i = 0; i < N; i++){
StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
String title = stringTokenizer.nextToken();
hashMap.put(title, hashMap.getOrDefault(title, 0) + 1);
max = Math.max(max, hashMap.get(title));
}
for(String key: hashMap.keySet()){
if(hashMap.get(key) == max){
if(answer.equals("") || key.compareTo(answer) < 0){
answer = key;
}
}
}
System.out.println(answer);
}
}
.
.
.
문제는 아래에서 확인할 수 있습니다.
https://www.acmicpc.net/problem/1302
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준_JAVA_알고리즘] 9375 패션왕 신해빈 #해시 (0) | 2024.12.27 |
---|---|
[백준_JAVA_알고리즘] 1920 수 찾기 #해시 (1) | 2024.12.27 |
[백준_JAVA_알고리즘] 11000 강의실 배정 #힙 #우선순위 큐 (0) | 2024.12.23 |
[백준_JAVA_알고리즘] 1715 카드 정렬하기 #힙 #우선순위 큐 (0) | 2024.12.23 |
[백준_JAVA_알고리즘] 11279 최대 힙 #힙 #우선순위 큐 (0) | 2024.12.19 |