[Baekjoon] 1302번: 베스트셀러
2023. 4. 4. 17:08ㆍComputer Sciences/Problem Solve
https://www.acmicpc.net/problem/1302
1302번: 베스트셀러
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고
www.acmicpc.net
문제 설명
가장 많이 입력된 책을 출력한다. 가장 많이 입력된 횟수가 같을 경우 사전 순으로 출력한다.
풀이 방법
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 |