TIL/Coding Test

[백준] 베스트셀러 Best Seller

반응형

3월 26일 문제였다.

 

1302번: 베스트셀러

첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고

www.acmicpc.net

답안 코드. 

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Map;
import java.util.Scanner;
import java.util.TreeMap;
import java.util.Map.Entry;

public class cote0326_BestSeller {

    static Scanner sc = new Scanner(System.in);

    public static Map<String, Integer> saveSoldBook(List<String> bookList) {
        Map<String, Integer> map = new TreeMap<>();
        for (int i = 0; i < bookList.size(); i++) {
            String bookName=bookList.get(i);
            if(map.containsKey(bookName)){
                int k = map.get(bookName);
                //System.out.println("k="+k);
                map.put(bookName, ++k);
            }else{
                map.put(bookName, 1);
            }
        }
        return map;
    }

    public static void main(String[] args) {

        //Do Not ask in your code when you are with BaekJoon ^^
        //System.out.println("enter bookList: ");
        int count = Integer.parseInt(sc.nextLine());
        Map<String, Integer> bookData = new TreeMap<>();

        //make bookList
        List<String> bookList = new ArrayList<>();
        for(int i=0; i<count; i++){
            String bookName=sc.nextLine();
            bookList.add(bookName);
        }
        
        //check how many books
        bookData = saveSoldBook(bookList);
        //System.out.println(bookData);
        Comparator<Entry<String, Integer>> comp = Entry.comparingByValue();
        Entry<String, Integer> entry = Collections.max(bookData.entrySet(), comp);

        System.out.print(entry.getKey());
    }
}

map.get(bookname)++을 쓰려고 했는데 컴파일 에러가 떠서 쓰지 못했다. 왜지? map의 value가 Integer여서 그런가.. int여야만 쓸 수 있는 걸까?

맥시멈 밸류에 따른 키를 꺼내고 싶었는데 방법을 몰라서 구글링했다. Comparator와 Entry를 사용하여 추출할 수 있다. 

728x90
반응형

'TIL > Coding Test' 카테고리의 다른 글

[LeetCode] Two Sum (Python)  (0) 2021.03.31
[LeetCode] Lemonade Change (Python)  (0) 2021.03.29
[프로그래머스] 오픈채팅방  (4) 2021.03.24
[프로그래머스] 카펫  (0) 2021.03.23
[프로그래머스] 주식가격  (0) 2021.03.22