์•Œ๊ณ ๋ฆฌ์ฆ˜/์„ ํ˜•๊ตฌ์กฐ

[๋ฐฑ์ค€ 11000 ๐Ÿฅ‡] ๊ฐ•์˜์‹ค ๋ฐฐ์ •

1eehyunji 2023. 10. 7. 19:18

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

 

11000๋ฒˆ: ๊ฐ•์˜์‹ค ๋ฐฐ์ •

์ฒซ ๋ฒˆ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 200,000) ์ดํ›„ N๊ฐœ์˜ ์ค„์— Si, Ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Si < Ti ≤ 109)

www.acmicpc.net

๋ฌธ์ œ

์ˆ˜๊ฐ•์‹ ์ฒญ์˜ ๋งˆ์Šคํ„ฐ ๊น€์ข…ํ˜œ ์„ ์ƒ๋‹˜์—๊ฒŒ ์ƒˆ๋กœ์šด ๊ณผ์ œ๊ฐ€ ์ฃผ์–ด์กŒ๋‹ค. 

๊น€์ข…ํ˜œ ์„ ์ƒ๋‹˜ํ•œํ…Œ๋Š” Si์— ์‹œ์ž‘ํ•ด์„œ Ti์— ๋๋‚˜๋Š” N๊ฐœ์˜ ์ˆ˜์—…์ด ์ฃผ์–ด์ง€๋Š”๋ฐ, ์ตœ์†Œ์˜ ๊ฐ•์˜์‹ค์„ ์‚ฌ์šฉํ•ด์„œ ๋ชจ๋“  ์ˆ˜์—…์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์•ผ ํ•œ๋‹ค. 

์ฐธ๊ณ ๋กœ, ์ˆ˜์—…์ด ๋๋‚œ ์งํ›„์— ๋‹ค์Œ ์ˆ˜์—…์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค. (์ฆ‰, Ti ≤ Sj ์ผ ๊ฒฝ์šฐ i ์ˆ˜์—…๊ณผ j ์ˆ˜์—…์€ ๊ฐ™์ด ๋“ค์„ ์ˆ˜ ์žˆ๋‹ค.)

์ˆ˜๊ฐ•์‹ ์ฒญ ๋Œ€์ถฉํ•œ ๊ฒŒ ์ฐ”๋ฆฌ๋ฉด, ์„ ์ƒ๋‹˜์„ ๋„์™€๋“œ๋ฆฌ์ž!

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์— N์ด ์ฃผ์–ด์ง„๋‹ค. (1 ≤ N ≤ 200,000)

์ดํ›„ N๊ฐœ์˜ ์ค„์— Si, Ti๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. (0 ≤ Si < Ti ≤ 109)

์ถœ๋ ฅ

๊ฐ•์˜์‹ค์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๋ผ.

๋ฌธ์ œ ํ’€์ด

  • ์ •๋ ฌ๊ณผ ์šฐ์„  ์ˆœ์œ„ ํ๋ฅผ ์ด์šฉํ•ด์„œ ํ‘ผ ๋ฌธ์ œ๋‹ค.
  • ๋จผ์ € ์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ๊ฐ ์ˆ˜์—…์˜ ์‹œ์ž‘ ์‹œ๊ฐ„๊ณผ ์ข…๋ฃŒ ์‹œ๊ฐ„ ๋ฐฐ์—ด์„ timetable์— ์ €์žฅํ•˜๊ณ  ์ •๋ ฌํ•œ๋‹ค.
  • ๊ทธ๋ฆฌ๊ณ  ์ฒซ ๋ฒˆ์งธ ์ˆ˜์—…์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ heap์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • ๊ทธ ๋‹ค์Œ ์ˆ˜์—…๋ถ€ํ„ฐ heap์˜ ์ œ์ผ ์ฒซ ๋ฒˆ์งธ ์ข…๋ฃŒ ์‹œ๊ฐ„ ์ฆ‰, ๊ฐ€์žฅ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„๋ณด๋‹ค ํ˜„์žฌ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ๋” ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ์ˆ˜์—…ํ•  ๋ฐฉ์„ ์ถ”๊ฐ€๋กœ ์ถ”๊ฐ€ํ•ด์ค„ ํ•„์š”์—†์ด ํ˜„์žฌ ์œ„์น˜ํ•˜๋Š” ๋ฐฉ์—์„œ ์ถ”๊ฐ€๋กœ ์ˆ˜์—…์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋ฐฉ์˜ ๊ฐœ์ˆ˜๋ฅผ ์œ ์ง€ํ•  ๊ฒธ ํ˜„์žฌ ๊ฐ€์žฅ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์—…๋ฐ์ดํŠธํ•  ๊ฒธ heappop์„ ์ด์šฉํ•ด์„œ ๊ฐ€์žฅ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ popํ•ด์ฃผ๊ณ , ์ƒˆ๋กœ์šด ์ข…๋ฃŒ ์‹œ๊ฐ„์„ heap์— ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 
  • ํ˜„์žฌ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ๊ฐ€์žฅ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„๋ณด๋‹ค ์ž‘์•„์„œ ๊ธฐ์กด์˜ ๋ฐฉ์— ์ƒˆ๋กœ ์ˆ˜์—…์„ ์ถ”๊ฐ€ํ•ด์ค„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ƒˆ๋กœ์šด ๋ฐฉ์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ heappush๋ฅผ ์ด์šฉํ•ด์„œ ํ˜„์žฌ ์ข…๋ฃŒ ์‹œ๊ฐ„์„ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. 
  • ๋ชจ๋“  ์ˆ˜์—… ์‹œ๊ฐ„์„ ์ฒ˜๋ฆฌํ•ด์ค€ ๋’ค์— heap์˜ ๋‚จ์€ ์›์†Œ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ณง ํ•„์š”ํ•œ ๋ฐฉ์˜ ๊ฐœ์ˆ˜๊ฐ€ ๋˜๋ฏ€๋กœ, heap์˜ ๊ธธ์ด๋ฅผ ์ถœ๋ ฅํ•ด์ค€๋‹ค. 
import sys
from heapq import heappush, heappop

n=int(sys.stdin.readline())
timetable=[list(map(int, sys.stdin.readline().split(' '))) for _ in range(n)]
timetable.sort()

room=[]
# ์ฒซ๋ฒˆ์งธ ์ˆ˜์—…์˜ ์ข…๋ฃŒ ์‹œ๊ฐ„ ์ถ”๊ฐ€
heappush(room, timetable[0][1])
for i in range(1,n):
    # ํž™์—์„œ ์ œ์ผ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„๋ณด๋‹ค ํ˜„์žฌ ์‹œ์ž‘ ์‹œ๊ฐ„์ด ๋” ํฌ๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด ๊ฐ€๋Šฅ
    if room[0]<=timetable[i][0]:
        # ํ˜„์žฌ ๊ฐ€์žฅ ์ž‘์€ ์ข…๋ฃŒ ์‹œ๊ฐ„ ์—…๋ฐ์ดํŠธ ๋ฐ ๋ฐฉ์˜ ๊ฐœ์ˆ˜ ์œ ์ง€
        heappop(room)
        heappush(room, timetable[i][1])
    else:
        # ๋ฐฉ ์ƒˆ๋กœ ์ถ”๊ฐ€
        heappush(room, timetable[i][1])


print(len(room))