[BOJ][๐ŸŸก5][๋ฐฑ์ค€#07983] ๋‚ด์ผ ํ• ๊ฑฐ์•ผ

์ž‘์„ฑ:    

์—…๋ฐ์ดํŠธ:

์นดํ…Œ๊ณ ๋ฆฌ:

ํƒœ๊ทธ: , , ,

๋ฌธ์ œ ์ถœ์ฒ˜

BAEKJOON Online Judge #7983


๋ฌธ์ œ

์•„ ๊ณผ์ œ ํ•˜๊ธฐ ์‹ซ๋‹ค. ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  ์‹ถ๋‹ค. ๋” ์ ๊ทน์ ์ด๊ณ  ๊ฒฉ๋ ฌํ•˜๊ฒŒ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  ์‹ถ๋‹ค. ์žˆ์ž–์•„. ๋‚ด๊ฐ€ ์•„๊นŒ ์ฑ…์ƒ์—๋‹ค๊ฐ€ n๊ฐœ์˜ ๊ณผ์ œ ๋ชฉ๋ก์„ ์ ์–ด๋†จ์–ด. ๊ฐ๊ฐ์˜ ๊ณผ์ œ i๋Š” di ์ผ์ด ๊ฑธ๋ฆฌ๊ณ , ์˜ค๋Š˜๋กœ๋ถ€ํ„ฐ ti ์ผ ์•ˆ์— ๋๋‚ด์•ผ ํ•ด. ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ์˜ค๋Š˜์ด 0์ผ์ด๋ฉด, ti์ผ์ด ๋๋‚˜๊ธฐ ์ „์— ์ œ์ถœ์ด์•ผ. ๊ณผ์ œ๋Š” ํ•œ๋ฒˆ ์‹œ์ž‘ํ•˜๋ฉด ์‰ฌ์ง€ ์•Š๊ณ  ๊ณ„์†ํ•ด์•ผ ํ•ด. ์•ˆ ๊ทธ๋Ÿฌ๋ฉด ๋จธ๋ฆฌ ์•„ํŒŒ ์ง€๊ฑฐ๋“ . ๊ทผ๋ฐ ์žˆ์ž–์•„. ๋‚ด๊ฐ€ ์ง€๊ธˆ ๋„ˆ๋ฌด, ๋„ˆ๋ฌด ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  ์‹ถ์–ด. ๊ทธ๋ž˜์„œ ์˜ค๋Š˜์€ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•  ๊ฑฐ์•ผ. ๋” ์ค‘์š”ํ•œ ๊ฒŒ ๋ญ”์ง€ ์•Œ์•„? ์‚ฌ์‹ค ๋‚˜ ๋‚ด์ผ๋„, ๋ชจ๋ ˆ๋„, ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  ์‹ถ์–ด. ํ•œ ๋ฉฐ์น  ๋™์•ˆ์€ ๊ณ„์† ์•„๋ฌด ๊ฒƒ๋„ ์•ˆํ•˜๋ ค๊ณ . ์•„. ๊ณผ์ œ๊ฐ€ ์žˆ์„ ๋•Œ ๋‚ด๊ฐ€ ๋‚ด์ผ๋ถ€ํ„ฐ ์—ฐ์†์œผ๋กœ ์ตœ๋Œ€ ๋ฉฐ์น ๋™์•ˆ ๋†€ ์ˆ˜ ์žˆ๋Š”์ง€ ๊ถ๊ธˆํ•˜๋‹ค. ๊ถ๊ธˆํ•˜๊ธด ํ•œ๋ฐ, ๋‚œ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•˜๊ณ  ์‹ถ์–ด. ์ข‹์€ ์ƒ๊ฐ์ด ๋‚ฌ๋‹ค. ๋„ˆํฌ๊ฐ€ ์ด๊ฑธ ๋Œ€์‹  ๊ตฌํ•ด์ฃผ๋ฉด, ๋‚ด๊ฐ€ ๋„ˆํฌ์˜ ๋งž์€ ๋ฌธ์ œ ์ˆ˜๋ฅผ ํ•˜๋‚˜ ์˜ฌ๋ ค์ค„๊ฒŒ.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ๊ณผ์ œ์˜ ๊ฐœ์ˆ˜์ธ ์ •์ˆ˜ n (1 โ‰ค n โ‰ค 106)์ด ์ฃผ์–ด์ง„๋‹ค. ์ดํ›„ n๊ฐœ์˜ ์ค„์— ๊ฐ๊ฐ์˜ ๊ณผ์ œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ˆ˜ di, ti (1 โ‰ค di, ti โ‰ค 109)๊ฐ€ ์ˆœ์„œ๋Œ€๋กœ ์ฃผ์–ด์ง„๋‹ค. ์˜ค๋Š˜์€ 0์ผ์ด๋‹ค. ๋ชจ๋“  ์ž…๋ ฅ์— ๋Œ€ํ•ด, ์˜ค๋Š˜ ์•„๋ฌด ๊ฒƒ๋„ ์•ˆ ํ•ด๋„ ๊ณผ์ œ๋ฅผ ๋งˆ๋ฌด๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์ด ์กด์žฌํ•จ์ด ๋ณด์žฅ๋œ๋‹ค.


์ถœ๋ ฅ

๋‚ด์ผ(1์ผ)๋ถ€ํ„ฐ ์—ฐ์†์œผ๋กœ ์ตœ๋Œ€ ๋ฉฐ์น  ๋™์•ˆ ๋†€ ์ˆ˜ ์žˆ๋Š”์ง€๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๊ฐ€๋ น, ๋‹ต์ด 0์ด๋ฉด, ๋‚ด์ผ ๊ณผ์ œ๋ฅผ ํ•ด์•ผ ํ•˜๋ฉฐ, 1 ์ด๋ฉด, ๋ชจ๋ ˆ์— ๊ณผ์ œ๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค.


์˜ˆ์ œ

์ž…๋ ฅ

3
2 8
1 13
3 10


์ถœ๋ ฅ

5


My Sol

import sys
input = sys.stdin.readline
from heapq import heappop, heappush

N = int(input())
H = []
for _ in range(N):
    d, t = map(int, input().split())
    heappush(H, (-t, -d))

k = heappop(H)
t, d = -k[0], -k[1]
cur = t-d+1
while H:
    k = heappop(H)
    t, d = -k[0], -k[1]
    cur = min(cur-1, t)
    cur -= d-1

print(cur-1)

๋’ค์—์„œ๋ถ€ํ„ฐ ๋งˆ๊ฐ๊ธฐํ•œ๊นŒ์ง€ ๊ณผ์ œ๋ฅผ ์ œ์ถœํ•˜๋ฉฐ ๋‚ ์งœ๋ฅผ ๊ฐฑ์‹ ํ•ด๋‚˜๊ฐ€๋ฉด ๋œ๋‹ค. heap์„ ์ด์šฉํ•ด ๋งˆ๊ฐ๊ธฐํ•œ์ด ํฐ ์ˆœ์„œ, ๊ทธ๋ฆฌ๊ณ  ์ž‘์—…๊ธฐ๊ฐ„์ด ํฐ ์ˆœ์„œ๋กœ ์ •๋ ฌํ•ด O(nlogn)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์ •๋ ฌํ–ˆ๋‹ค. ํ•œ ๊ณผ์ œ๋ฅผ ๋๋‚ด๋Š” ๋ฐ์— ํ•„์š”ํ•œ ์‹œ๊ฐ„ ์ค‘ ๋ฏธ๋ฃฐ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€์˜ ์‹œ๊ฐ„์€, ํ˜„์žฌ ์‹œ๊ฐ„ cur์—์„œ 1์„ ๋บ€ ์‹œ๊ฐ„๊ณผ ํ˜„ ๊ณผ์ œ์˜ ๋งˆ๊ฐ๊ธฐํ•œ ์ค‘ ๋” ์ž‘์€ ๊ฐ’์ด๋‹ค. ์ด ๊ฐ’์—์„œ ์ž‘์—… ๊ธฐ๊ฐ„์„ ๋บ€ ๋‚ ์งœ๋ฅผ cur์— ๊ฐฑ์‹ ํ•ด ๋„ฃ๋Š”๋‹ค. ๋งˆ์ง€๋ง‰ cur-1์„ ์ถœ๋ ฅํ•œ๋‹ค.


๊ฒฐ๊ณผ

๋งž์•˜์Šต๋‹ˆ๋‹ค!!

๋Œ“๊ธ€๋‚จ๊ธฐ๊ธฐ