🌞Algorithm/🔥Baekjoon

[Baekjoon] 32328_Bronze Count

뿌야._. 2025. 1. 8. 16:53
문제(출처: https://www.acmicpc.net/problem/32328)

< Bronze Count >

 

문제 풀이 

 

점수를 key값으로 그 점수를 받은 인원수를 value로 가지는 HashMap을 사용한다.

 

 

 my solution (Java)

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 _32328_ { // Bronze Count

	public static void main(String[] args) throws IOException {
		BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        
		int n = Integer.parseInt(bf.readLine());
        
		HashMap<Integer, Integer> map = new HashMap<>();
		for (int i = 0; i < n; i++) {
			int score = Integer.parseInt(bf.readLine());
            
			if (map.containsKey(score)) {
				map.replace(score, map.get(score) + 1);
			} else {
				map.put(score, 1);
			}
		}
        
		ArrayList<Integer> list = new ArrayList<>(map.keySet());
		Collections.sort(list, Collections.reverseOrder());
        
		System.out.println(list.get(2) + " " + map.get(list.get(2)));
	}
}
변수)
n : 참가자 수
map : HashMap <점수, 점수받은 인원수>
list : 점수를 값으로 가지는 ArrayList

 

참가자 수를 입력받아 참가자 수만큼 점수를 입력받는다. 점수가 key값에 있다면 value에 1 더하고 없다면 key를 추가한다. key값을 ArrayList로 만들어 내림차순으로 정렬한다. 3등을 찾기 위해 ArrayList의 2번째 값과 그 값을 key값으로 가지는 value를 찾아 출력한다.