[BOJ] 8980. ํƒ๋ฐฐ (๐Ÿ“ฆ, ๊ทธ๋ฆฌ๋””)

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

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

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

๐Ÿ”—

ํ’€์ด

์ด ๋ฌธ์ œ๋Š” ์ตœ๋Œ€ํ•œ ๋งŽ์ด ๋ฐฐ๋‹ฌํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋นจ๋ฆฌ ๋ฐฐ๋‹ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ๋“ค๋ถ€ํ„ฐ ๋นจ๋ฆฌ ๋ฐฐ๋‹ฌํ•  ์ˆ˜๋ก ๋งŽ์ด ๋ฐฐ๋‹ฌํ•  ์ˆ˜ ์žˆ๋‹ค.

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

Arrays.sort(boxInfo, (a, b) -> {
    return (a[1] - a[0]) - (b[1] - b[0]);
});

์ด๋ ‡๊ฒŒํ•˜๋ฉด 52์ ์—์„œ ํ†ต๊ณผ๋ฅผ ๋ชปํ•œ๋‹ค.

๊ทผ๋ฐ ์ž˜ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋„์ฐฉํ•˜๋Š” ๊ณณ์ด ํ•ญ์ƒ ์ถœ๋ฐœํ•˜๋Š” ๊ณณ๋ณด๋‹ค ์ˆซ์ž๊ฐ€ ํฌ๋‹ค๊ณ  ํ–ˆ์œผ๋ฏ€๋กœ a[1] ์€ ํ•ญ์ƒ a[0] ๋ณด๋‹ค ํฌ๊ณ , b[1] ์€ ํ•ญ์ƒ b[0] ๋ณด๋‹ค ํฌ๋‹ค. ๊ฒฐ๊ตญ a[1] - a[0] ์€ ํ•ญ์ƒ ์–‘์ˆ˜๊ฐ€ ๋˜๊ณ  b[1] - b[0] ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋ฏ€๋กœ ๋‘ ์ธ๋ฑ์Šค ์ค‘ ํ•˜๋‚˜๋งŒ ๊ฐ€์ง€๊ณ  ๋น„๊ตํ•˜๋ฉด ๋˜๋Š” ๊ฒƒ์ด๋‹ค.

Arrays.sort(boxInfo, (a, b) -> {
    return a[1] - b[1];
});

์ด๋Ÿฌ๋ฉด 100์ ๋œ๋‹ค.

๊ฒฐ๊ตญ ์ถœ๋ฐœ์ง€~๋„์ฐฉ์ง€ ์‚ฌ์ด์˜ ๊ฐ„๊ฒฉ์ด ์ข๋‹ค๋Š” ๊ฑฐ๋‚˜ ๋„์ฐฉ์ง€๊ฐ€ ์•ž์ชฝ์— ์žˆ๋Š”๊ฑฐ๋‚˜ ๊ฐ™๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค. ๋„์ฐฉ์ง€๊ฐ€ 1์— ๊ฐ€๊นŒ์šธ ์ˆ˜๋ก ์ถœ๋ฐœ์ง€์™€ ๋„์ฐฉ์ง€์˜ ๊ฐ„๊ฒฉ์ด ์งง์•„์ง„๋‹ค๋Š” ์˜๋ฏธ. ์ƒ์‹์ ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๋„์ฐฉ์ง€๊ฐ€ 3์ธ๊ฒŒ ๋„์ฐฉ์ง€๊ฐ€ 6์ธ ๊ฒƒ๋ณด๋‹ค ์ถœ๋ฐœ์ง€์™€์˜ ๊ฐ„๊ฒฉ์ด ์งง์„ ๊ฒƒ์ด๋‹ค.

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

public class Main {
    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 C = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(br.readLine());

        int[][] boxInfo = new int[M][3];
        for (int i = 0; i < M; i++) {
            st = new StringTokenizer(br.readLine());
            boxInfo[i][0] = Integer.parseInt(st.nextToken());
            boxInfo[i][1] = Integer.parseInt(st.nextToken());
            boxInfo[i][2] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(boxInfo, (a, b) -> {
            return a[1] - b[1];
        });

        long[] road = new long[N];
        long totalCnt = 0;
        for (int[] box : boxInfo) {
            int from = box[0];
            int to = box[1];
            int count = box[2];

            long maxCnt = 0;
            for (int i = from; i < to; i++) {
                maxCnt = Math.max(maxCnt, road[i]);
            }
            
            long add = Math.min(count, C - maxCnt);
            for (int i = from; i < to; i++) {
                road[i] += add;
            }
            totalCnt += add;
        }
        System.out.println(totalCnt);
    }
}
profile
์•„๋ฌด๋ง์ด๋‚˜ํ•˜๊ธฐ

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