코테/백준

[백준/JAVA] 1302번: 베스트셀러

imname1am 2023. 8. 6. 00:48
반응형

🔺 문제

 

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

 

반응형