[BaekJoon] 1302 베스트셀러

오태호·2022년 3월 10일
0

1.  문제 링크

https://www.acmicpc.net/problem/1302

2.  문제

요약

  • 오늘 하루 판매된 책의 제목들을 보고 가장 많이 팔린 책의 제목을 구합니다. 만약 여러 권이라면 사전 순으로 가장 앞에 있는 제목을 구합니다.
  • 입력: 첫 번째 줄에는 하루 동안 팔린 책의 개수가 주어지고 두 번째 줄부터 책의 개수만큼 제목이 입력으로 들어옵니다.
  • 출력: 가장 많이 팔린 책의 제목을 출력합니다.

3.  소스코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

public class Main {
	public String getBestSeller(ArrayList<String> book_list) {
		Map<String, Integer> book_map = new HashMap<String, Integer>();
		for(int i = 0; i < book_list.size(); i++) {
			if(book_map.containsKey(book_list.get(i))) {
				book_map.put(book_list.get(i), book_map.get(book_list.get(i)) + 1);
			} else {
				book_map.put(book_list.get(i), 0);
			}
		}
		int max_num = 0;
		for(String i : book_map.keySet()) {
			if(max_num < book_map.get(i)) {
				max_num = book_map.get(i);
			}
		}
		ArrayList<String> bestSeller = new ArrayList<String>();
		for(String i : book_map.keySet()) {
			if(max_num == book_map.get(i)) {
				bestSeller.add(i);
			}
		}
		Collections.sort(bestSeller);
		return bestSeller.get(0);
	}
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		int num = Integer.parseInt(br.readLine());
		ArrayList<String> book_list = new ArrayList<String>();
		for(int i = 0; i < num; i++) {
			book_list.add(br.readLine());
		}
		br.close();
		Main m = new Main();
		bw.write(m.getBestSeller(book_list) + "\n");
		bw.flush();
		bw.close();
	}
}

4.  접근

  • 주어진 제목들을 보고 각 제목마다 팔린 개수를 구한 후에 그 중에서 가장 많이 팔린 책의 제목을 출력합니다.
  • 책의 제목을 key로, 팔린 개수를 value로 하여 HashMap을 만들고 HashMap에 이미 제목이 존재한다면 해당 제목의 value를 1 올리고 그렇지 않다면 value를 0으로 두고 HashMap에 추가합니다.
  • 이렇게 팔린 개수를 구한 후에 가장 많이 팔린 개수를 구하고 해당 개수를 value로 갖는 key들을 찾아 ArrayList에 넣어줍니다.
  • 가장 많이 팔린 책의 제목들이 들어가있는 ArrayList를 오름차순으로 정렬하여 ArrayList에서 가장 첫 번째에 있는 값을 출력합니다.
profile
자바, 웹 개발을 열심히 공부하고 있습니다!

0개의 댓글

관련 채용 정보