[Boj_14464] ์†Œ๊ฐ€ ๊ธธ์„ ๊ฑด๋„ˆ๊ฐ„ ์ด์œ  4

๐Ÿ“Ž ๋ฌธ์ œ ๋งํฌ

https://www.acmicpc.net/problem/14464

 

โ–ธ ๋ฌธ์ œ

๋†๋ถ€ ์กด์˜ ์†Œ๋“ค์€ ํšจ์œจ์ ์œผ๋กœ ๊ธธ์„ ๊ฑด๋„ˆ๋Š” ๋ฐฉ๋ฒ•์„ ํ„ฐ๋“ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋“ค์€ ๊ธธ ๊ฑด๋„ˆ๊ธฐ์˜ ๋‹ฌ์ธ์ธ ๋‹ญ์˜ ๋„์›€์„ ๋ฐ›๊ธฐ๋กœ ํ–ˆ๋‹ค.

์•ˆํƒ€๊น๊ฒŒ๋„ ๋‹ญ์€ ๋งค์šฐ ๋ฐ”์œ ๋™๋ฌผ์ด๋ผ, ์†Œ๋ฅผ ๋„์™€์ค„ ์‹œ๊ฐ„์ด ๋ณ„๋กœ ์—†๋‹ค. ๋†์žฅ์— C๋งˆ๋ฆฌ(1 ≤ C ≤ 20,000)์˜ ๋‹ญ์ด ์žˆ๊ณ , 1๋ฒˆ๋ถ€ํ„ฐ C๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. i๋ฒˆ ๋‹ญ์€ ์ •ํ™•ํžˆ Ti์ดˆ์—๋งŒ ์†Œ๋ฅผ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‹ญ์€ ๊ธธ ๊ฑด๋„ˆ๊ธฐ์˜ ๋‹ฌ์ธ์ด๋ฏ€๋กœ ์†Œ๋ฅผ ๋ฐ๋ฆฌ๊ณ ๋„ ์ˆœ์‹๊ฐ„์— ๊ธธ์„ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. ์†Œ๋Š” ํ•  ์ผ์ด ์—†์–ด์„œ ์—ฌ์œ ๋กญ๊ฒŒ ๊ธธ์„ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. ์†Œ๋Š” ์ด N๋งˆ๋ฆฌ(1 ≤ N ≤ 20,000)๊ฐ€ ์žˆ๊ณ , ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋ถ™์–ด ์žˆ๋‹ค. j๋ฒˆ ์†Œ๋Š” Aj์ดˆ๋ถ€ํ„ฐ Bj์ดˆ๊นŒ์ง€ ๊ธธ์„ ๊ฑด๋„ ์ˆ˜ ์žˆ๋‹ค. j๋ฒˆ ์†Œ๊ฐ€ i๋ฒˆ ๋‹ญ์˜ ๋„์›€์„ ๋ฐ›์•„ ๊ธธ์„ ๊ฑด๋„ˆ๋ ค๋ฉด  Aj ≤ Ti ≤ Bj๋ฅผ ๋งŒ์กฑํ•ด์•ผ ํ•œ๋‹ค.

์†Œ๋Š” ์ตœ๋Œ€ ํ•œ ๋งˆ๋ฆฌ์˜ ๋‹ญ์—๊ฒŒ๋งŒ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๊ณ , ๋‹ญ ์—ญ์‹œ ์ตœ๋Œ€ ํ•œ ๋งˆ๋ฆฌ์˜ ์†Œ๋งŒ ๋„์™€์ค„ ์ˆ˜ ์žˆ๋‹ค. ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์†Œ๊ฐ€ ์ตœ๋Œ€ ๋ช‡ ๋งˆ๋ฆฌ์ธ์ง€ ๊ตฌํ•ด๋ณด์ž.

 

โ–ธ ์ž…๋ ฅ

์ฒซ ์ค„์— C์™€ N์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹ค์Œ C์ค„์—๋Š” T1…TC๊ฐ€ ์ฃผ์–ด์ง€๊ณ , ๊ทธ ๋‹ค์Œ N์ค„์—๋Š” Aj์™€ Bj(A≤ Bj)๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. A, B, T๋Š” ๋ชจ๋‘ ์ตœ๋Œ€ 1,000,000,000์ธ ์Œ์ด ์•„๋‹Œ ์ •์ˆ˜์ด๊ณ , ๊ฐ™์„ ์ˆ˜๋„ ์žˆ๋‹ค.

 

โ–ธ ์ถœ๋ ฅ

๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์†Œ๊ฐ€ ์ตœ๋Œ€ ๋ช‡ ๋งˆ๋ฆฌ์ธ์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด

  • ๐Ÿฅ‡ ๋ฌธ์ œ ๋ ˆ๋ฒจ : ๊ณจ๋“œ 1
  • ๐Ÿ””  ๋ฌธ์ œ ์œ ํ˜• : ์ž๋ฃŒ๊ตฌ์กฐ, ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์šฐ์„ ์ˆœ์œ„ ํ
  • ๐Ÿ’ฌ  ํ’€์ด ์–ธ์–ด : JAVA

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์˜€๋‹ค.

 

๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋Š” ๋‹ญ์„ ์ฐพ๊ธฐ ์œ„ํ•ด Ti๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์€ ์ผ€์ด์Šค์˜ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•˜๊ธฐ ์œ„ํ•ด ์†Œ๋Š” Bj ๊ธฐ์ค€์œผ๋กœ, Bj๊ฐ€ ๊ฐ™๋‹ค๋ฉด Aj๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•œ๋‹ค.

Ti : 2, 4

Aj Bj : 1 5, 2 3

 

ํ•œ ๋งˆ๋ฆฌ์˜ ์†Œ์”ฉ ์ˆœํšŒํ•˜๋ฉฐ ๋„์›€์„ ๋ฐ›์€ ์ ์ ˆํ•œ ๋‹ญ์„ ์ฐพ์•„์ฃผ๋ฉด ๋œ๋‹ค.

 

์œ„ ํ’€์ด๋Œ€๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

 

โœ” ์ตœ์ข… ์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ : 22244KB
์‹œ๊ฐ„ : 440ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.PriorityQueue;
import java.util.StringTokenizer;

public class Main {
    static int c, n;
    static int[] chickens;
    static PriorityQueue<Pos> cows;
    static public class Pos implements Comparable<Pos> {
        int start; int end;
        public Pos (int start, int end) {
            this.start = start; this.end = end;
        }
        @Override
        public int compareTo(Pos o) {
            if (this.end != o.end) return this.end - o.end;
            return this.start - o.start;
        }
    }
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        c = Integer.parseInt(st.nextToken()); // ๋‹ญ์˜ ์ˆ˜
        n = Integer.parseInt(st.nextToken()); // ์†Œ์˜ ์ˆ˜

        chickens = new int[c];
        for (int i = 0; i < c; i++) {
            chickens[i] = Integer.parseInt(br.readLine());
        }
        Arrays.sort(chickens);

        cows = new PriorityQueue<>();
        int s, e;
        for (int i = 0; i < n ; i++) {
            st = new StringTokenizer(br.readLine());
            s = Integer.parseInt(st.nextToken());
            e = Integer.parseInt(st.nextToken());

            cows.offer(new Pos(s, e));
        }

        // ๋ช‡ ๋งˆ๋ฆฌ์˜ ์†Œ๊ฐ€ ๋‹ญ์—๊ฒŒ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š”์ง€
        System.out.println(sol());
    }

    private static int sol() {
        int cnt = 0;

        while (!cows.isEmpty()) {
            // ์†Œ๋Š” ์ตœ๋Œ€ ํ•œ๋ฒˆ ๋‹ญ์˜ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
            Pos now = cows.poll();

            for (int i = 0; i < c; i++) {
                // ์†Œ๊ฐ€ ๋‹ญ์—๊ฒŒ ๋„์›€์„ ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ
                if (chickens[i] >= now.start && chickens[i] <= now.end) {
                    cnt++;
                    // ๋‹ญ์€ ์ตœ๋Œ€ ํ•œ๋ฒˆ๋งŒ ์†Œ๋ฅผ ๋„์™€์ค„ ์ˆ˜ ์žˆ์Œ
                    chickens[i] = -1;
                    break;
                }
            }
        }

        return cnt;
    }
}

 

ํ•ด๊ฒฐ ์™„๋ฃŒ ! ๐Ÿ”ฅ