From 26225c6a9b62a050a3310ae2709bdc3adf7a78cd Mon Sep 17 00:00:00 2001 From: sukangpunch Date: Fri, 6 Feb 2026 16:27:42 +0900 Subject: [PATCH] =?UTF-8?q?[Week05]=20BOJ=201781:=20=EC=BB=B5=EB=9D=BC?= =?UTF-8?q?=EB=A9=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sukangpunch.java" | 70 +++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 "weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/sukangpunch.java" diff --git "a/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/sukangpunch.java" "b/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/sukangpunch.java" new file mode 100644 index 0000000..9d7599d --- /dev/null +++ "b/weekly/week05/BOJ_1781_\354\273\265\353\235\274\353\251\264/sukangpunch.java" @@ -0,0 +1,70 @@ +package study.week05; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.PriorityQueue; + +// 컵라면 +public class BOJ_1781 { + + static class Problem implements Comparable { + + int deadLine; + int cup; + + public Problem(int deadLine, int cup) { + this.deadLine = deadLine; + this.cup = cup; + } + + @Override + public int compareTo(Problem o) { + if (this.deadLine == o.deadLine) { + return o.cup - this.cup; + } + return this.deadLine - o.deadLine; + } + } + + static PriorityQueue pq; + static int N; + + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + + N = Integer.parseInt(br.readLine()); + pq = new PriorityQueue<>(); + + for (int i = 0; i < N; i++) { + String[] s = br.readLine().split(" "); + int deadLine = Integer.parseInt(s[0]); + int cup = Integer.parseInt(s[1]); + pq.add(new Problem(deadLine, cup)); + } + + PriorityQueue select = new PriorityQueue<>(); + + while(!pq.isEmpty()){ + Problem problem = pq.poll(); + int deadLine = problem.deadLine; + int cup = problem.cup; + + if(select.size() < deadLine){ + select.offer(cup); + }else{ + if(!select.isEmpty() && select.peek() < cup){ // 만약 선택한 문제 중 가장 적은 컵라면보다 현재 추가하려는 problem 의 컵라면 개수가 더 많다면 + select.poll(); + select.offer(cup); + } + } + } + + long result = 0; + for(int cup : select){ + result += cup; + } + + System.out.println(result); + } +}