[Boj_1263] ์‹œ๊ฐ„ ๊ด€๋ฆฌ

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

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

 

โ–ธ ๋ฌธ์ œ

์ง„์˜์ด๋Š” ์บ ํ”„ ์กฐ๊ต๋ฅผ ์˜จ ํ›„ ํšจ์œจ์ ์œผ๋กœ ์‹œ๊ฐ„ ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๊นจ๋‹ฌ์•˜๋‹ค. ์ง„์˜์ด๋Š” ํ•˜๋ฃจ์— ํ•ด์•ผ ํ•  ์ผ์ด ์ด N๊ฐœ๊ฐ€ ์žˆ๊ณ  ์ด ์ผ๋“ค์„ ํŽธํ•˜๊ฒŒ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ์ฐจ๋ก€๋Œ€๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์˜€๋‹ค.

์ง„์˜์ด๋Š” ์‹œ๊ฐ„์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด, ํ•  ์ผ๋“ค์— ๋Œ€ํ•ด ๋๋‚ด์•ผํ•  ์‹œ๊ฐ„๊ณผ ๊ฑธ๋ฆฌ๋Š” ์‹œ๊ฐ„์„ ์ ์€ ๋ช…๋‹จ์„ ๋งŒ๋“ค์—ˆ๋‹ค. ์ฆ‰, ์ด ๋ช…๋‹จ์€ i๋ฒˆ์งธ ์ผ์€ ์ผ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ์ •ํ™•ํžˆ Ti ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๊ณ  Si ์‹œ ๋‚ด์— ์ด ์ผ์„ ์ฒ˜๋ฆฌํ•˜์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ๋‹ด๊ณ  ์žˆ๋‹ค. ์ง„์˜์ด๋Š” 0์‹œ๋ถ€ํ„ฐ ํ™œ๋™์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๊ณ , ๋‘ ๊ฐœ ์ด์ƒ์˜ ์ผ์„ ๊ฐ™์€ ์‹œ๊ฐ„์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋‹ค.

์ง„์˜์ด๊ฐ€ ๋ฐ”๋ผ๋Š” ์ ์€ ์ตœ๋Œ€ํ•œ ๋Šฆ์ž ์„ ์ž๋Š” ๊ฒƒ์ด๋‹ค. ๋ฌธ์ œ๋Š” ์ด๋Ÿฌํ•œ ์ง„์˜์ด๋ฅผ ๋„์™€ ์ผ๋“ค์€ ๋ชจ๋‘ ๋งˆ๊ฐ์‹œ๊ฐ„ ๋‚ด์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ์ตœ๋Œ€ํ•œ ๋Šฆ๊ฒŒ ์ผ์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด ๋ช‡ ์‹œ์ธ์ง€ ์•Œ์•„๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

 

โ–ธ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ผ์˜ ์ˆ˜ N์ด ์ž…๋ ฅ๋˜๊ณ  ๋‹ค์Œ N๊ฐœ์˜ ์ค„์— ๋Œ€ํ•ด i+1๋ฒˆ์งธ ์ค„์—๋Š” i๋ฒˆ์งธ ์ผ์— ๋Œ€ํ•œ Ti์™€ Si๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.

 

โ–ธ ์ถœ๋ ฅ

์ง„์˜์ด๊ฐ€ ์ผ์„ ๋ชจ๋‘ ๋๋งˆ์น  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋Šฆ์€ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ 0์‹œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ๋„ ์ผ์„ ๋๋งˆ์น  ์ˆ˜ ์—†๋‹ค๋ฉด -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

โ–ธ ์ œํ•œ

  • 1 ≤ N ≤ 1,000
  • 1 ≤ Ti ≤ 1,000
  • 1 ≤ Si ≤ 1,000,000

 

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

  • ๐Ÿฅ‡  ๋ฌธ์ œ ๋ ˆ๋ฒจ : ๊ณจ๋“œ 5
  • ๐Ÿ””  ๋ฌธ์ œ ์œ ํ˜• : ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์ •๋ ฌ
  • ๐Ÿ’ฌ  ํ’€์ด ์–ธ์–ด : JAVA

 

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

์ด ๋ฌธ์ œ๋Š” ์ •๋ ฌ๊ณผ ๊ทธ๋ฆฌ๋”” ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•ต์‹ฌ์€, ๋ชจ๋“  ์ผ์„ ๋งˆ๊ฐ์‹œ๊ฐ„ ๋‚ด์— ๋๋‚ผ ์ˆ˜ ์žˆ๋Š” ๋ฒ”์œ„ ๋‚ด์—์„œ ๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ๋Šฆ๊ฒŒ ์ผ์„ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ด๋ฅผ ์œ„ํ•ด ๋งˆ๊ฐ ์‹œ๊ฐ„์ด ๋Šฆ์€ ์ž‘์—…๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์— ์ดˆ์ ์„ ๋งž์ถฐ ํ’€์—ˆ๋‹ค.

 

๋จผ์ € ๊ฐ ์ž‘์—…์˜ ๋งˆ๊ฐ ์‹œ๊ฐ„์„ ๊ธฐ์ค€์œผ๋กœ ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌํ•œ๋‹ค.

๋งŒ์•ฝ ๋งˆ๊ฐ ์‹œ๊ฐ„์ด ๊ฐ™์€ ์ž‘์—…์ด ์žˆ๋‹ค๋ฉด, ์–ด๋А ๊ฒƒ์„ ์„ ํƒํ•ด๋„ ๋œ๋‹ค.

 

๋จผ์ € ์ดˆ๊ธฐ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๊ฐ€์žฅ ๋Šฆ์€ ์ž‘์—…์˜ ๋งˆ๊ฐ ์‹œ๊ฐ„์œผ๋กœ ์„ค์ •ํ•œ๋‹ค.

์ •๋ ฌ๋œ ์ž‘์—…๋“ค์„ ์ˆœ์„œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉด์„œ, ๊ฐ ์ž‘์—…์ด ๋งˆ๊ฐ ์‹œ๊ฐ„ ๋‚ด์— ๋๋‚˜๋„๋ก ํ•„์š”ํ•œ ์‹œ์ž‘ ์‹œ๊ฐ„์„ ๊ณ„์‚ฐํ•˜๊ณ ,

์ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ด์ „ ์ž‘์—…์ด ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ๋Šฆ์€ ์‹œ๊ฐ„์„ ๊ณ„์† ๊ฐฑ์‹ ํ•œ๋‹ค.

 

์ด๋•Œ, ๋งŒ์•ฝ ์‹œ์ž‘ ์‹œ๊ฐ„์ด 0์‹œ๊ฐ„๋ณด๋‹ค ์ด์ „์œผ๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด

์ง„์˜์ด๊ฐ€ ํ™œ๋™์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์—†๋Š” ์‹œ๊ฐ„์ด๋ฏ€๋กœ  -1์„ ์ถœ๋ ฅํ•œ๋‹ค.

 

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

 

โœ” ์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ : 12136KB
์‹œ๊ฐ„ : 76ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

public class Main {
    static public class Time implements Comparable<Time> {
        int processTime; int end;
        public Time(int processTime, int end) {
            this.processTime = processTime; this.end = end;
        }
        @Override
        public int compareTo(Time o) {
            // ์ข…๋ฃŒ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ๋Šฆ์€ ์ผ์„ ๊ฐ€์žฅ ๋’ค์— ๋ฐฐ์น˜
            return o.end - this.end;
        }
    }

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(br.readLine());
        StringTokenizer st;
        List<Time> works = new ArrayList<>();
        int t, s; // ์ผ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„, ์ œํ•œ ์‹œ๊ฐ„
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            t = Integer.parseInt(st.nextToken());
            s = Integer.parseInt(st.nextToken());

            works.add(new Time(t, s));
        }
        Collections.sort(works);

        int time = works.get(0).end; // ์ตœ๋Œ“๊ฐ’
        for (int i = 0; i < n; i++) {
            time = Math.min(works.get(i).end, time) -  works.get(i).processTime;
            if (time < 0) {
                time = -1;
                break;
            }
        }

        System.out.println(time);

        br.close();
    }
}

 

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

 

์—ฌํ–‰ ๊ฐ”๋‹ค ์˜ค๋А๋ผ ์ง€๋‚œ์ฃผ ๋‚ด๋‚ด ์ŠคํŠธ๋ฆญ ์ฑ„์šฐ๊ธฐ์šฉ ๋ฌธ์ œ๋งŒ ํ’€์–ด์„œ ํ’€์ด๋ฅผ ์ƒ๊ฐํ•˜๋Š”๋ฐ ๊ฝค ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ ธ๋‹ค.
๊ทธ๋Ÿฐ ๊น€์— ํ•œ ๋ฒˆ ๋” ์ •๋ฆฌํ•  ๊ฒธ ๋ธ”๋กœ๊ทธ์— ํฌ์ŠคํŒ…๊นŒ์ง€ ์™„๋ฃŒ !

์—ญ์‹œ ์˜ค๋žœ๋งŒ์— ๋ฌธ์ œ ํ’€๋ฉด ์˜ค๋žœ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.. ๊พธ์ค€ํžˆ ํ’€๋ ค๊ณ  ๋…ธ๋ ฅํ•ด์•ผ์ง€ ! โญ