ALGORITHM/프로그래머스 | 백준 | 삼성 | 카카오

[백준] 13904 과제 java

SZCODE 2022. 10. 5. 19:46

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

 

13904번: 과제

예제에서 다섯 번째, 네 번째, 두 번째, 첫 번째, 일곱 번째 과제 순으로 수행하고, 세 번째, 여섯 번째 과제를 포기하면 185점을 얻을 수 있다.

www.acmicpc.net

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Comparator;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

class Main{
	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine());
		int[][] array = new int[N][2];
		
		StringTokenizer st = null;
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			array[i][0] = Integer.parseInt(st.nextToken());
			array[i][1] = Integer.parseInt(st.nextToken());
		}
		
		Arrays.sort(array,new Comparator<int[]>() {
			@Override
			public int compare(int[] o1, int[] o2) {
				return o1[0]-o2[0];
			}
		});
		

		PriorityQueue<Integer> pq = new PriorityQueue();
		int sum = 0;
		for(int i = 0; i<N; i++) {
			pq.add(array[i][1]);
			while(!pq.isEmpty() && pq.size()>array[i][0])
				pq.poll();
		}
		while(!pq.isEmpty()) {
			sum+= pq.poll();
		}
		
		System.out.println(sum);
		
	}
}