๋ฌธ์
https://www.acmicpc.net/problem/11000
๋ด ๋ฌธ์ ํ์ด
import sys
import heapq
n = int(sys.stdin.readline().strip())
times = [] # ์
๋ ฅ๋๋ ๊ฐ์ ์๊ฐ๋ค์ ํํ ํํ๋ก ์ ์ฅ
rooms = [] # ๊ฐ ์์๊ฐ ํ๋์ ๊ฐ์์ค์ ๋ปํ๋ ๋ฐฐ์ด
for _ in range(n):
(start, end) = map(int, sys.stdin.readline().strip().split())
times.append((start, end))
times.sort(key=lambda x: (x[0], x[1])) # ์์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ, ์์์๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ ์ข
๋ฃ ์๊ฐ ๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
for i in times:
(start, end) = i
if rooms and rooms[0] <= start:
heapq.heappop(rooms) # rooms์ ์ต์๊ฐ pop
heapq.heappush(rooms, end) # rooms์ ํ์ฌ ๊ฐ์์ ์ข
๋ฃ ์๊ฐ push
print(len(rooms))
๐ ์ฐ์ ์์ ํ ๋ฌธ์
- times ๋ฆฌ์คํธ์ ๊ฐ์ ์๊ฐ๋ค์ ํํ ํํ๋ก ๋ฐ๊ณ , ์์์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ฃผ์๋ค.
- rooms๋ ๊ฐ ์์๊ฐ ํ๋์ ๊ฐ์์ค์ ๋ปํ๋ ๋ฐฐ์ด์ธ๋ฐ, ๊ฐ์์ค๋ง๋ค ๋๋๋ ์๊ฐ์ ์ ๋ฐ์ดํธํด์ฃผ๊ธฐ ์ํด ๋ง๋ค์๋ค.
- for๋ฌธ์์๋ rooms ๋ฆฌ์คํธ๊ฐ ๋น์ด์์ง ์๊ณ , ํ์ฌ ๊ฐ์์ ์์ ์๊ฐ์ด rooms์ ์ต์๊ฐ๋ณด๋ค ์์ ๊ฒฝ์ฐ
rooms์ ์ต์๊ฐ์ ๋บ ํ ํ์ฌ ๊ฐ์์ ์ข ๋ฃ ์๊ฐ์ pushํ ์ ์๊ฒ ํ๋ค.
=> ์ต์๊ฐ์ด ๋ค์ด์๋ ๊ฐ์์ค์ ์ข ๋ฃ ์๊ฐ์ ์๋กญ๊ฒ ์ ๋ฐ์ดํธํด์ฃผ๋ ๋ถ๋ถ์ด๋ค. - ์์ ๋ฐ๋ ๊ฒฝ์ฐ์๋ ์๋ก์ด ๊ฐ์์ค์ด ํ์ํ ๊ฒ์ด๋ฏ๋ก, ๊ทธ๋ฅ ํ์ฌ ๊ฐ์ ์ข ๋ฃ ์๊ฐ์ pushํ๋ ๋์๋ง ํด์ฃผ์๋ค.
- rooms๋ ์ด ์ฌ์ฉ๋ ๊ฐ์์ค๋ค์ ๊ฐ์ง๋ฏ๋ก, ๊ทธ ๊ธธ์ด๋ฅผ ๊ฒฐ๊ณผ๋ก ์ถ๋ ฅํด์ฃผ์๋ค.
๐ก ํผ๋๋ฐฑ
- heapq๋ฅผ ์ฒ์์จ๋ด์ ์ค๋๊ฑธ๋ ธ๋๋ฐ ์ด๋ก ๋ ๊ฐ์ด ๊ณต๋ถํด๋ด์ผ๊ฒ ๋ค.
'4๏ธโฃ Python > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python Algorithm] ๊ฒฝ๋ก ์ฐพ๊ธฐ BOJ #11403 (feat. BFS, ํ๋ก์ด๋ ์์ ) (0) | 2022.06.23 |
---|---|
[Python Algorithm] ๊ฐ์ด๋ฐ๋ฅผ ๋งํด์ BOJ #1655 (0) | 2022.06.14 |
[Python Algorithm] ์นด๋ ๊ตฌ๋งคํ๊ธฐ BOJ #11052 (0) | 2022.05.26 |
[Python Algorithm] ๋ค๋ฆฌ ๋๊ธฐ BOJ #1010 (0) | 2022.05.26 |
[Python Algorithm] LCS BOJ #9251 (0) | 2022.05.26 |
๋๊ธ