-
[Python] ๋ฐฑ์ค 11000 ๊ฐ์์ค ๋ฐฐ์ (Heapq)๐ป Algorithm/Python 2022. 7. 8. 23:39
๐ ๋ฌธ์
์๊ฐ์ ์ฒญ์ ๋ง์คํฐ ๊น์ข ํ ์ ์๋์๊ฒ ์๋ก์ด ๊ณผ์ ๊ฐ ์ฃผ์ด์ก๋ค.
๊น์ข ํ ์ ์๋ํํ ๋ Si์ ์์ํด์ Ti์ ๋๋๋ N๊ฐ์ ์์ ์ด ์ฃผ์ด์ง๋๋ฐ, ์ต์์ ๊ฐ์์ค์ ์ฌ์ฉํด์ ๋ชจ๋ ์์ ์ ๊ฐ๋ฅํ๊ฒ ํด์ผ ํ๋ค.
์ฐธ๊ณ ๋ก, ์์ ์ด ๋๋ ์งํ์ ๋ค์ ์์ ์ ์์ํ ์ ์๋ค. (์ฆ, Ti ≤ Sj ์ผ ๊ฒฝ์ฐ i ์์ ๊ณผ j ์์ ์ ๊ฐ์ด ๋ค์ ์ ์๋ค.)
์๊ฐ์ ์ฒญ ๋์ถฉํ ๊ฒ ์ฐ๋ฆฌ๋ฉด, ์ ์๋์ ๋์๋๋ฆฌ์!
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. (1 ≤ N ≤ 200,000)
์ดํ N๊ฐ์ ์ค์ Si, Ti๊ฐ ์ฃผ์ด์ง๋ค. (0 ≤ Si < Ti ≤ 109)
์ถ๋ ฅ
๊ฐ์์ค์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ผ.
์์ ์ ๋ ฅ 1
3 1 3 2 4 3 5
์์ ์ถ๋ ฅ 1
2
๐ ํ์ด
๐ฌ Code
import sys, heapq input = sys.stdin.readline n = int(input()) lesson = [list(map(int, input().split())) for i in range(n)] lesson.sort() room = [] heapq.heappush(room, lesson[0][1]) for i in range(1, len(lesson)): if room[0] <= lesson[i][0]: heapq.heapreplace(room, lesson[i][1]) else: heapq.heappush(room, lesson[i][1]) print(len(room))
๐ก Solution
- lesson: ๊ฐ์์๊ฐ์ ๋ด์ ๋ฆฌ์คํธ
- room: ๊ฐ์์ค ์ฌ์ฉ์ด ๋๋๋ ์๊ฐ์ ๋ด์ ๋ฆฌ์คํธ → ํ์ผ๋ก ๋ง๋ค์ด์ ๋นจ๋ฆฌ ๋๋๋ ๊ฒ์ ๋จผ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ๊ตฌํ!
for i in range(1, len(lesson)): if room[0] <= lesson[i][0]: heapq.heapreplace(room, lesson[i][1]) else: heapq.heappush(room, lesson[i][1])
- if room[0] <= lesson[i][0]
๊ฐ์ฅ ๋นจ๋ฆฌ ๋๋๋ ๊ฐ์์ ์ข ๋ฃ์๊ฐ room[0]๊ณผ ํ์ฌ ๊ฐ์์ ์์์๊ฐ lesson[i][0]์ ๋น๊ต
์ข ๋ฃ์๊ฐ์ด ๋ ์๊ฑฐ๋ ๊ฐ๋ค๋ฉด ์ด ๊ฐ์์ค์ ๊ทธ๋๋ก ์ธ ์ ์๋ ๊ฒ
๋ฐ๋ผ์ ์งํ์ค์ด์๋ ๊ฐ์๋ฅผ popํ๊ณ ํ์ฌ ๊ฐ์๋ฅผ push
- else
์ข ๋ฃ์๊ฐ์ด ๋ ํฌ๋ค๋ฉด ๋ค๋ฅธ ๊ฐ์์ค์ ์ถ๊ฐ๋ก ์จ์ผ ํ๋ ๊ฒ
๋ฐ๋ผ์ ํ์ฌ ๊ฐ์๋ฅผ push
print(len(room))
- ๊ฐ์์ค ๊ฐ์๋ฅผ ์ถ๋ ฅ
'๐ป Algorithm > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค 11265 ๋๋์ง ์๋ ํํฐ (Floyd-Warshall) (0) 2022.07.08 [Python] ๋ฐฑ์ค 18352 ํน์ ๊ฑฐ๋ฆฌ์ ๋์ ์ฐพ๊ธฐ (Dijkstra) (0) 2022.07.08 [Python] ๋ฐฑ์ค 3107 IPv6 (String) (0) 2022.07.08 [Python] ๋ฐฑ์ค 13022 ๋๋์ ์ฌ๋ฐ๋ฅธ ๋จ์ด (String) (0) 2022.07.08 [Python] ๋ฐฑ์ค 7576 ํ ๋งํ (BFS) (0) 2022.07.08