알고리즘 PS/Sorting
[99클럽 코테 스터디 38일차 TIL] 1845. Seat Reservation Manager
explorer999
2024. 6. 26. 20:44
Seat Reservation Manager - LeetCode
- 1 <= n <= 10의 5제곱
- 1부터 10만까지.
- 1초의 시간 제한이 있다고 하고 1초에 실행할 수 있는 연산 횟수가 약 1억번이라고 할 때, 데이터의 개수(n)이 100,000이면 최대 시간복잡도가 O(nlogn)이 되도록 해야 한다.
- 힙 정렬, 퀵 정렬, 합병 정렬을 사용할 수 있다.
<내 풀이>
import heapq
class SeatManager:
def __init__(self, n: int):
self.h = []
for i in range(1, n+1):
self.h.append(i)
self.res = []
self.res.append('null')
def reserve(self) -> int:
a= heapq.heappop(self.h)
self.res.append(a)
return a
def unreserve(self, seatNumber: int) -> None:
b = heapq.heappush(self.h, seatNumber)
self.res.append('null')
# Your SeatManager object will be instantiated and called as such:
# obj = SeatManager(n)
# param_1 = obj.reserve()
# obj.unreserve(seatNumber)
- heapq 모듈의 heapq.heappop, heapq.heappush를 이용했다.
- 세 개의 함수에서 모두 h, res 배열을 사용해야 함. 공통으로 클래스 인스턴스를 참조하기 위해서 self를 사용했다.
- self.h, self.h를 __init__ 함수에서 정의하고, 클래스 내의 메서드들에서 인스턴스 변수에 접근하거나 다른 메서드를 호출할 때 사용한다.