https://www.acmicpc.net/problem/1302
1302번: 베스트셀러
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고
www.acmicpc.net
import java.io.*;
import java.util.*;
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());
       Map<String, Integer> map = new HashMap<>(); // book, count
       int max = 0;
       for(int i=0; i<n; i++){
           String book = br.readLine();
           if(!map.containsKey(book)) map.put(book, 1); // map에 책이 포함되어있지 않다면 1로
           else map.put(book, map.get(book) + 1); // 포함되어 있다면 1증가
           max = Math.max(max, map.get(book)); // 최댓값 갱신
       }
       List<String> list = new ArrayList<>();
        for(Map.Entry<String, Integer> entry : map.entrySet()){
            if(entry.getValue() == max) list.add(entry.getKey()); // 빈도수 가장 높은 책들 리스트에 추가
        }
       Collections.sort(list); // 사전 순으로 정렬 
        System.out.print(list.get(0));
    }
}
책 이름과 책의 갯수를 저장하기 위해 HashMap을 이용하였다.
entrySet()을 사용해 전체 map을 돌며 개수가 가장 많은 책 이름을 리스트에 추가하고,
Collections.sort를 이용해 사전 순으로 정렬한 후 가장 첫번째 책을 출력한다.
반응형
    
    
    
  'ALGORITHM' 카테고리의 다른 글
| [JAVA] 백준 14425번- 문자열 집합 (0) | 2022.06.18 | 
|---|---|
| [Javascript] 알고리즘-문자열 압축 (0) | 2022.06.18 | 
| [Javascript] 프로그래머스- 탐욕법(Greedy)/ 체육복 (0) | 2022.03.11 | 
| [Javascript] 프로그래머스- 정렬 / H-Index (0) | 2022.03.05 | 
| [Javascript] 프로그래머스- 정렬 / 가장 큰 수 (0) | 2022.03.04 |