본문 바로가기
PS/Baekjoon

[Baekjoon] 1302 - 베스트셀러

by 서현 SEOHYEON 2023. 7. 19.

📝 문제

 

 

🔑 풀이 과정

· 책 개수 카운팅은 Map을 쓰고, 사전 순으로 가장 앞서는 제목을 출력하는 거니까 자바에서 기본제공하는 정렬을 쓰면 된다 까지는 파악했는데, 그 정렬을 어떻게 하지?에서 막혔었다.

근데 의외로 해결법은 간단했는데, → list로 따로 담아서 정렬을 시켜주면 된다.

 

· 왜 항상 자료구조를 문제당 1개만 쓰려고 하는지...! 여러개 써도 상관없는데! 좀 생각을 다차원적으로 좀 해봐 내 자신아

 

· 그리고 Map.entrySet()이 문제풀이하면서 좀 많이 쓰이는 것 같다. 이번 기회에 이거 사용법좀 익히는 걸로...

 

 

 

🔓 답안

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        Map<String, Integer> map = new HashMap<>();

        //입력
        int N = Integer.parseInt(br.readLine());

        int max = 0; //제일 많이 판매된 갯수를 저장할 변수
        for(int i = 0; i < N; i++){
            String book = br.readLine();
            int count;

            if(!map.containsKey(book))
                count = 0;
            else
                count = map.get(book) + 1;

            map.put(book, count);

            if(count > max)
                max = count;
        }
        //입력 종료

        //맵을 전체탐색 하면서, value가 max값인 경우, key(책 제목)를 List에 넣어줌
        ArrayList<String> list = new ArrayList<>();

        for(Map.Entry<String, Integer> entry: map.entrySet()){
            if(entry.getValue() == max)
                list.add(entry.getKey());
        }

        //정렬
        Collections.sort(list);
        String result = list.get(0); //가장 앞에있는 원소를 출력

        //출력
        bw.write(result + "\n");
        bw.flush();
        bw.close();
    }

}

 

 

🖤 알고리즘 분류

- 자료 구조

- 문자열

- 정렬

- 해시를 사용한 집합과 맵

'PS > Baekjoon' 카테고리의 다른 글

[Baekjoon] 9095 - 1, 2, 3 더하기  (0) 2023.07.21
[Baekjoon] 1463 - 1로 만들기  (0) 2023.07.20
[Baekjoon] 1269 - 대칭 차집합  (0) 2023.07.18
[Baekjoon] 7785 - 회사에 있는 사람  (0) 2023.07.17
[Baekjoon] 1541 - 잃어버린 괄호  (0) 2023.07.16

댓글