๋ฌธ์
๋ฆฟ์ฝ๋ 1845. Seat Reservation Manager
https://leetcode.com/problems/seat-reservation-manager/
์ฝ๋
import heapq
class SeatManager:
def __init__(self, n):
self.can_reserve = list(range(1, n + 1))
heapq.heapify(self.can_reserve)
def reserve(self):
return heapq.heappop(self.can_reserve)
def unreserve(self, seatNumber):
heapq.heappush(self.can_reserve, seatNumber)
ํ์ด
def __init__(self, n):
self.can_reserve = list(range(1, n + 1))
heapq.heapify(self.can_reserve)
init ํจ์๋ SeatManager์ ๊ฐ์ฒด๋ฅผ ์ด๊ธฐํํ๋ค.
n์ ๊ด๋ฆฌํ ์ข์์ ์ ์ด๋ค.
self.can_reserve ๋ ์์ฝ ๊ฐ๋ฅํ ์ข์์ ๋ํ๋ด๋ ๋ฆฌ์คํธ ์ด๋ค.
heapq.heapify()๋ฅผ ์ด์ฉํด์ self.can_reserve๋ฅผ ์ต์ํ์ผ๋ก ๋ฐ๊พผ๋ค.
def reserve(self):
return heapq.heappop(self.can_reserve)
reserve ํจ์๋ ์์ฝ ๊ฐ๋ฅํ ์ข์ ์ค์์ ๊ฐ์ฅ ์์ ๋ฒํธ์ ์ข์์ ์์ฝํ๋ค.
self.can_reserve์์ ๊ฐ์ฅ ์์ ๊ฐ์ popํ๊ณ ๋ฐํํ๋ค.
์ด๋ pop๋ ๊ฐ์ ์์ฝ๋ ์ข์ ๋ฒํธ์ด๋ค.
def unreserve(self, seatNumber):
heapq.heappush(self.can_reserve, seatNumber)
unreserve ํจ์๋ ์ฃผ์ด์ง ์ข์์ ๋ค์ ์์ฝํ๋ค.
heappush()์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ์ seatNumber๋ฅผ self.can_reserve ํ์ ์ถ๊ฐํ๋ค.
์๋กญ๊ฒ ๋ฐฐ์ด์ / ๋๋์
- ํ์ด์ฌ ๋ชจ๋์ heapq๋ฅผ ์ ๊ณตํ๋ค. ๊ตฌ์กฐ์ ์ผ๋ก๋ min heapํํ๋ก ์ ๋ ฌ๋๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ์ธ๋ฑ์ค 0 ๋ถํฐ ์์ํด์ k๋ฒ์งธ ์์๋ ํญ์ ์์๋ค(2k + 1, 2k + 2)๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
- heapq์ ํจ์๋ค
- heapq.heappush(heap, item) : item์ heap์ ์ถ๊ฐํ๋ค.
- heapq.heappop(heap) : heap์์ ๊ฐ์ฅ ์์ ์์๋ฅผ popํ๊ณ pop๋ ๊ฐ์ ๋ฐํํ๋ค. ๋ง์ฝ heap์ด ๋น์ด์๋ ๊ฒฝ์ฐ ์ธ๋ฑ์ค์๋ฌ๊ฐ ๋๋ค.
- heapq.heappify(lst) : ์ด๋ฏธ ์์ฑํด๋ lst ๋ฐฐ์ด์ด ์๋ค๋ฉด, lst ๋ฐฐ์ด์ min heap ํํ๋ก ๋ฐ๊พผ๋ค.
๋ค๋ฅธ ์๊ฒฌ์ด๋ ๊ถ๊ธํ์ ๊ฒ ์๋ค๋ฉด ํธํ๊ฒ ๋๊ธ ๋ฌ์์ฃผ์ธ์ :)
'์ฝ๋ฉํ ์คํธ๐ก' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1012. ์ ๊ธฐ๋ ์๋ฐฐ์ถ (2) | 2024.07.14 |
---|---|
[๋ฆฟ์ฝ๋] Reduce Array Size To The Half (0) | 2024.06.27 |
[๋ฆฟ์ฝ๋] Minimum Add to Make Parentheses Valis (0) | 2024.06.25 |
[๋ฆฟ์ฝ๋] Removing Stars From a String (0) | 2024.06.24 |
[๋ฆฟ์ฝ๋] Find the Winner of the Circluar Game (0) | 2024.06.22 |