[Baekjoon] 1302번: 베스트셀러
2023. 4. 4. 17:08ㆍComputer Sciences/Problem Solve
https://www.acmicpc.net/problem/1302
문제 설명
가장 많이 입력된 책을 출력한다. 가장 많이 입력된 횟수가 같을 경우 사전 순으로 출력한다.
풀이 방법
HashMap을 활용해서 해결했다. 간단한 문제이므로 바로 코드를 보자.
import java.io.*;
import java.util.*;
import java.util.stream.Collectors;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Map<String, Integer> map = new HashMap<>();
int N = Integer.parseInt(br.readLine());
// 책 이름 입력받기
while (N-- > 0) {
String title = br.readLine();
// 이미 책이 있으면 카운트 + 1, 없으면 1로 초기화
if (map.containsKey(title)) {
map.put(title, map.get(title) + 1);
} else {
map.put(title, 1);
}
}
List<String> keyList = map.keySet().stream().collect(Collectors.toList());
// 카운트에 대해 내림차순으로 정렬, 같으면 제목으로 사전순 정렬
keyList.sort((title1, title2) -> {
int result = map.get(title2).compareTo(map.get(title1));
if (result != 0) {
return result;
} else {
return title1.compareTo(title2);
}
});
System.out.print(keyList.get(0));
}
}
'Computer Sciences > Problem Solve' 카테고리의 다른 글
[Baekjoon] 1747번: 소수&팰린드롬 (0) | 2023.04.06 |
---|---|
[Baekjoon] 1644번: 소수의 연속합 (0) | 2023.04.05 |
[Baekjoon] 9020번: 골드바흐의 추측 (0) | 2023.04.03 |
[Baekjoon] 3273번: 두 수의 합 (0) | 2023.04.03 |
[Baekjoon] 1463번: 1로 만들기 (0) | 2023.03.31 |