🔺 문제
1302번: 베스트셀러
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고
www.acmicpc.net
🔺 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.*;
import java.io.*;
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());
int max = 0;
Map<String, Integer> map = new HashMap<>();
while(N --> 0) {
String book = br.readLine();
map.put(book, map.getOrDefault(str, 0) + 1); // 책 횟수 저장
max = Math.max(max, map.get(book));
}
List<String> list = new ArrayList<>();
for(Map.Entry<String, Integer> e : map.entrySet()) {
if(e.getValue() == max) {
list.add(e.getKey());
}
Collections.sort(list); // 책 제목 사전순 정렬
System.out.println(list.get(0));
}
}
|
cs |
✅ 해결 아이디어
✔ 맵
1. 책 이름과 횟수를 HashMap을 이용해 저장한다.
2. 가장 자주 나온 횟수를 max에 저장한다.
3. 해시맵의 횟수가 가장 큰 값과 같게 나올 때, 리스트에 값을 추가한다.
4. 리스트를 책 제목 사전 순으로 정렬한다.
5. 리스트 맨 첫번째 원소 하나만 출력한다.
- 향상형 for문을 사용한 HashMap 값 출력하기 !! (참고)
→ for(Map.Entry<타입, 타입> 변수명 : entrySet())
: 반복문 실행
→ e.getKey()
: HashMap의 Key 값 가져오기
→ e.getValue()
: HashMap의 Value 값 가져오기
🔺 다른 풀이들
- 뒤쪽 순서가 조금 다르긴 하다...만 흐름은 비슷함!
[BOJ] 백준 1302 - 베스트셀러 (자바)
자료구조...,,, 탐색....,, 범위가 작음.... 문제 생길게 없다.해쉬맵 알고 있다면 쉽게 풀 수 있음 풀이1. 해쉬맵을 통해 이름과 횟수를 저장한다. (key, value) 처럼2. 해쉬맵을 전체 탐색하여 가장 큰 v
zoonvivor.tistory.com
- 사전순 정렬하실 때 조금 다른 방법 사용하셔서 참고용으로 추가함.
[BOJ] 백준 1302번 베스트셀러 (Java)
#1302 베스트셀러 난이도 : 실버 4 유형 : Map, 정렬 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의
loosie.tistory.com
💬 느낀 점
Map 쓸 생각은 했었는데
Map에서 Key랑 Value 가져오는 방식은 자주 안 쓰다보니 익숙해지진 않은 것 같다..
분발,,,
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
(참고)
[백준] 1302번 : 베스트셀러 – JAVA [자바]
https://www.acmicpc.net/problem/1302 1302번: 베스트셀러 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들
propercoding.tistory.com
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 19941번: 햄버거 분배 (0) | 2023.08.07 |
---|---|
[백준/JAVA] 20920번: 영단어 암기는 괴로워 (0) | 2023.08.07 |
[백준/JAVA] 2630번: 색종이 만들기 (0) | 2023.08.04 |
[백준/JAVA] 3190번: 뱀 (0) | 2023.08.03 |
[백준/JAVA] 1347번: 미로 만들기 (0) | 2023.08.03 |