[BOJ] 1202. ๋ณด์„ ๋„๋‘‘ (๐Ÿฅ‡, ๊ทธ๋ฆฌ๋””)

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

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

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

๐Ÿ”—

ํ’€์ด

๋น„์‹ผ ์ฅฌ์–ผ๋ฆฌ๋ถ€ํ„ฐ ๊ฐ€๋ฐฉ์— ๋‹ด์•„์•ผ ํ•œ๋‹ค. ๊ทผ๋ฐ ์ด๋•Œ ์ตœ๋Œ€ํ•œ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€๋ฐฉ์— ๋‹ด์•„์•ผ ํ•œ๋‹ค. ๋น„์‹ผ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌํ•œ ๋‹ค์Œ์— ์ฅฌ์–ผ๋ฆฌ์˜ ๋ฌด๊ฒŒ์™€ ๊ฐ€์žฅ ์ฐจ์ด๊ฐ€ ๋‚˜์ง€ ์•Š๋Š” ๊ฐ€๋ฐฉ์— ๋‹ด์œผ๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ๊ทธ๋ ‡๊ฒŒ ๋˜๋ฉด ์˜ˆ์ œ2์—์„œ (2, 99)์˜ ๋ณด์„์ด 2 ํฌ๊ธฐ์˜ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธฐ๊ฒŒ ๋˜๊ณ , (1, 65)์˜ ๋ณด์„์„ ๋‹ด์„ ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค.

๊ฒฐ๊ตญ ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ณด์„์„ ๋‹ด๊ธฐ ์œ„ํ•œ ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์„ ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค. ๊ฐ€๋ฐฉ ํ•˜๋‚˜์—๋Š” ๋ณด์„์„ ํ•˜๋‚˜๋ฐ–์— ๋‹ด์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ€๋ฐฉ์— ๋ณด์„์„ ๋‹ด์„ ๋•Œ, ๋‹ค๋ฅธ ๋ณด์„๋“ค์ด ๊ฐ€๋ฐฉ์— ๋“ค์–ด๊ฐˆ ๊ธฐํšŒ๋ฅผ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์ค„ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์„ ๊ฐ€๋ฐฉ์— ๋‹ด์•„์•ผ ํ•œ๋‹ค.

๋งŒ์•ฝ ๋ฌด๊ฒŒ๋Š” ์ž‘์€๋ฐ ๊ฐ€๊ฒฉ์ด ๋†’๊ฒŒ ๋‚˜๊ฐ€๋Š” ๋ณด์„์„ ๊ฐ€์žฅ ํฌ๊ธฐ๊ฐ€ ํฐ ๊ฐ€๋ฐฉ์— ๋‹ด๊ฒŒ ๋˜๋ฉด, ์ดํ›„์— ๋ฌด๊ฒŒ๊ฐ€ ๋ฌด๊ฑฐ์šด ๋ณด์„๋“ค์€ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธธ ๊ธฐํšŒ๊ฐ€ ์—†์„ ์ˆ˜ ์žˆ๋‹ค. ์ž‘์€ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ณด์„์€ ํฐ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ์ง€๋งŒ, ํฐ ๊ฐ€๋ฐฉ์—๋งŒ ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค์€ ์ž‘์€ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธธ ์ˆ˜ ์—†๋‹ค. ๊ฒฐ๊ตญ ์ž‘์€ ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค์€ ์ตœ๋Œ€ํ•œ ์ž‘์€ ๊ฐ€๋ฐฉ์— ๋‹ด์•„์•ผ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ๊ทธ๋ž˜์„œ ๊ทธ๋ฆฌ๋””ํ•œ ํ’€์ด๊ฐ€ ๋œ๋‹ค.

ํฌ๊ธฐ๊ฐ€ n์ธ ๊ฐ€๋ฐฉ์— ๋ณด์„๋“ค์„ ๋‹ด์„ ๋•Œ, ์ตœ๋Œ€ํ•œ ๋น„์‹ผ๊ฒƒ๋ถ€ํ„ฐ์•ผ ๋‹ด์•„์•ผ ํ•˜๋Š”๋ฐ ์ด๋•Œ ๋ณด์„ ๊ฐœ์ˆ˜๋Š” ์ตœ๋Œ€ 30๋งŒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ฐ˜ ์ •๋ ฌ๋กœ ๊ตฌํ•˜๊ฒŒ ๋˜๋ฉด ์ตœ์•…์˜ ๊ฒฝ์šฐ O(N^2)์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํž™ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•˜๋Š” ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ํฌ๊ธฐ์˜ ๊ฐ€๋ฐฉ์— ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค ๊ฐ€์šด๋ฐ ๊ฐ€์žฅ ๋น„์‹ผ ๋ณด์„์„ ์ฐพ์•„ ๋‹ด๋Š”๋‹ค.

๋จผ์ € ๋ณด์„๋“ค์„ ๋ฌด๊ฒŒ ์ˆœ์„œ๋Œ€๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•˜๊ณ , ๊ฐ€๋ฐฉ๋„ ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค. ์ž‘์€ ๊ฐ€๋ฐฉ์— ๋‹ด๊ธธ ์ˆ˜ ์žˆ๋Š” ๋ณด์„๋“ค๋งŒ ์šฐ์„ ์ˆœ์œ„ ํ์— ๋‹ด๊ณ , ๊ทธ ์ค‘์—์„œ ๊ฐ€์žฅ ๋ฌด๊ฑฐ์šด ๋ณด์„์„ ๊บผ๋‚ธ๋‹ค. ํ•ด๋‹น ๊ณผ์ •์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

// ๋ณด์„ ๋„๋‘‘

package Baekjoon.Gold;

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

public class baekjoon_1202 {
        public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        long[][] jewelry = new long[N][2];
        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            jewelry[i][0] = Long.parseLong(st.nextToken());
            jewelry[i][1] = -Long.parseLong(st.nextToken());
        }

        long[] bags = new long[K];
        for (int i = 0; i < K; i++) {
            bags[i] = Long.parseLong(br.readLine());
        }

        Arrays.sort(jewelry, (a, b) -> (int) (a[0] - b[0]));
        Arrays.sort(bags);

        long answer = 0;
        int idx = 0;
        PriorityQueue<long[]> pq = new PriorityQueue<>(Comparator.comparingLong(arr -> arr[1]));
        for (int i = 0; i < K; i++) {
            long bagWeight = bags[i];
            while (idx < N && bagWeight >= jewelry[idx][0]) {
                pq.add(jewelry[idx]);
                idx++;
            }

            if (!pq.isEmpty()) {
                answer -= pq.poll()[1];
            }
        }
        System.out.println(answer);
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

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