[BOJ] 13904. ๊ณผ์ œ (๐Ÿฅ‡, ๊ทธ๋ฆฌ๋””/์šฐ์„ ์ˆœ์œ„ ํ)

lemythe423ยท2024๋…„ 2์›” 14์ผ
0

BOJ ๋ฌธ์ œํ’€์ด

๋ชฉ๋ก ๋ณด๊ธฐ
110/133
post-thumbnail

๐Ÿ”—

ํ’€์ด

1202. ๋ณด์„๋„๋‘‘ ๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ์ œ.

๋ฉฐ์น  ๋‚ด์— ๊ณผ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š”์ง€ ๊ธฐํ•œ์ด ์ฃผ์–ด์ง€์ง€ ์•Š์œผ๋ฏ€๋กœ ์ฃผ์–ด์ง€๋Š” ๊ณผ์ œ๋“ค ๊ฐ€์šด๋ฐ ์ตœ๋Œ€ ๋งˆ๊ฐ์ผ์„ ๊ธฐํ•œ์œผ๋กœ ์ •ํ•˜๋ฉด ๋œ๋‹ค. ์–ด์ฐจํ”ผ ๊ทธ ์ด์ƒ์˜ ๊ธฐํ•œ์„ ์ค˜ ๋ดค์ž ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณผ์ œ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์—.

๋ฌธ์ œ ์˜ˆ์ œ์—์„œ๋Š” 6์ผ์ด ์ตœ๋Œ€์ด๊ธฐ ๋•Œ๋ฌธ์— ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด์„  6์ผ์„ ๋งˆ์ง€๋ง‰ ๊ณผ์ œ ๋งˆ๊ฐ ๊ธฐํ•œ์ผ์ด๋ผ๊ณ  ์ •ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์‚ฌ์‹ค์ƒ 6์ผ ์ฐจ์— ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๊ณผ์ œ๋Š” (6, 5) ๋ฐ–์— ์—†๋‹ค. 5์ผ ์ฐจ์—๋Š” ๋งˆ๊ฐ์ผ์ด 5์ผ ์ด์ƒ์ธ ๊ณผ์ œ๋“ค์ด ์—†์œผ๋ฏ€๋กœ(6์ผ ์ฐจ์˜ ๊ณผ์ œ๋Š” 6์ผ์ฐจ์— ํ•ด๊ฒฐํ• ๊ฑฐ๋‹ˆ๊นŒ ์ œ์™ธ) ๋„˜์–ด๊ฐ„๋‹ค. 4์ผ ์ฐจ์—๋Š” 3๊ฐœ์˜ ๊ณผ์ œ๊ฐ€ ์žˆ๋Š”๋ฐ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ์ด๋‹ˆ๊นŒ ์ตœ๋Œ€ ์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋Š” ๊ณผ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. (4, 60) ๊ณผ์ œ๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค. ๋‹ค์Œ์€ 3์ผ์ฐจ์ธ๋ฐ (3, 30) ๊ณผ์ œ๊ฐ€ ์ถ”๊ฐ€๋˜์ง€๋งŒ ๊ณผ์ œ ๋งˆ๊ฐ์ผ์ด 3์ผ ์ด์ƒ์ธ ๊ณผ์ œ๋“ค ๊ฐ€์šด๋ฐ (4, 40)์ด ์ตœ๋Œ€ ์ ์ˆ˜ ์ด๋ฏ€๋กœ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ๋‹ค. ๋‹ค์Œ์€ 2์ผ์ฐจ๋กœ ๊ณผ์ œ ๋งˆ๊ฐ์ผ์ด 2์ผ ์ด์ƒ์ธ ๊ณผ์ œ๋“ค ๊ฐ€์šด๋ฐ ์ตœ๋Œ€๊ฐ’์„ ๊ณ ๋ฅด๋ฉด (2, 50)์ด๋‹ค.

์ด๋Ÿฐ์‹์œผ๋กœ ๊ณผ์ œ ๋งˆ๊ฐ ๊ธฐํ•œ์ผ์—์„œ 1์ผ์ฐจ๋กœ ๊ฐ€๋Š” ๊ฑฐ๊พธ๋กœ ํ’€์ดํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ํ’€์ดํ•˜๋ฉด ๋œ๋‹ค. ์ด์œ ๋Š” ๋งˆ๊ฐ ๊ธฐํ•œ์ผ์„ ๋„˜๊ธฐ๋ฉด ์ ์ˆ˜๋ฅผ ์–ป์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋’ค๋กœ ๊ฐˆ์ˆ˜๋ก ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋“ค์˜ ์ˆ˜์— ํ•œ๊ณ„๊ฐ€ ์ƒ๊ธฐ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ž˜์„œ ์ ์€ ์ˆ˜์˜ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋Š” ๊ฒƒ์—์„œ๋ถ€ํ„ฐ ์ตœ๋Œ€๊ฐ’์„ ๊ตฌํ•˜๊ณ  ์ ์  ๋ฒ”์œ„๋ฅผ ๋Š˜๋ ค๊ฐ€์•ผ ๊ทธ๋ฆฌ๋””ํ•˜๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋‹ค.

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

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();

        int[][] assignment = new int[N][2];
        for (int i = 0; i < N; i++) {
            assignment[i][0] = sc.nextInt();
            assignment[i][1] = sc.nextInt();
        }

        Arrays.sort(assignment, (a, b) -> {
            if (a[0] != b[0]) return b[0] - a[0];
            return b[1] - a[1];
        });

        int finalDay = assignment[0][0];
        int idx = 0;
        int maxScore = 0;
        PriorityQueue<Integer> queue = new PriorityQueue<>();
        while (finalDay > 0 && idx < N) {

            while (idx < N && finalDay == assignment[idx][0]) {
                queue.add(-assignment[idx][1]);
                idx++;
            }
            System.out.println(queue);

            if (!queue.isEmpty()) {
                maxScore -= queue.poll();
            }
            finalDay--;
        }
        System.out.println(maxScore);
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€