Algorithm/백준 알고리즘

백준_1302 베스트셀러(자바) / 문자열

미스터로즈 2021. 7. 7. 19:03

시간&메모리 제한

 

문제

 

입력&출력

 

문제풀이

package com.Back;

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

public class Back_1302 {

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		HashMap<String,Integer> hm = new HashMap<String, Integer>();
		int max = Integer.MIN_VALUE;
		
		for (int i = 0; i < N; i++) {
			String tmp = br.readLine();
			if(hm.containsKey(tmp)) {
				hm.replace(tmp, hm.get(tmp)+1);
			}else {
				hm.put(tmp, 1);
			}
		}
		
		for(String tmp : hm.keySet()) {
			max = Math.max(max, hm.get(tmp));
		}
		
		ArrayList<String> arr = new ArrayList<String>(hm.keySet());
		Collections.sort(arr);
		for(String tmp : arr) {
			if(hm.get(tmp) == max) {
				System.out.println(tmp);
				break;
			}
		}
	}
}

- 이 문제의 경우 문자열을 이용해서 해결하는 문제였습니다.

 

- 각각의 책의 제목을 담는 동시에, 팔린 책의 수를 체크해야 합니다.

 

- 따라서, HashMap을 이용해서 문제 해결을 했습니다.

 

- HashMap Key에는 String으로 책의 제목을 받고, Value에는 Integer로 팔린 수를 넣었습니다.

 

- 팔린 책의 수의 최댓값을 구한뒤, 그에 맞는 책의 제목을 찾았습니다.