본문 바로가기
코딩 문제 풀이/백준

[백준] 자바 문제 풀이 1781 : 골드2

by 코딩하는 랄로 2023. 10. 4.
728x90

 BOJ 1781 : 컵라면 풀이 코드

import java.io.*;
import java.util.*;

public class Main {
	static class Problem {
		int ramen;
		int time;

		Problem(int time, int ramen) {
			this.ramen = ramen;
			this.time = time;
		}
	}

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		int n = Integer.parseInt(br.readLine());
		PriorityQueue<Problem> deadline = new PriorityQueue<>((o1, o2) -> o1.time - o2.time);

		for (int i = 0; i < n; i++) {
			StringTokenizer str = new StringTokenizer(br.readLine(), " ");
			deadline.add(new Problem(Integer.parseInt(str.nextToken()), Integer.parseInt(str.nextToken())));
		}

		PriorityQueue<Problem> rst = new PriorityQueue<>((o1, o2) -> o1.ramen - o2.ramen);
		if (!deadline.isEmpty()) {
			rst.add(deadline.poll());

			while (!deadline.isEmpty()) {
				Problem l = deadline.poll();

				if (l.time == rst.size()) {
					if (l.ramen > rst.peek().ramen) {
						rst.poll();
						rst.add(l);
					}
				} else {
					rst.add(l);
				}

			}
		}
		int total = 0;
		while (!rst.isEmpty()) {
			total += rst.poll().ramen;
		}
		bw.write(total + "\n");
		bw.flush();
		bw.close();
		br.close();
	}

}
728x90