Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 좌석 예약 관리자를 구현하는 프로그램

<시간/>

n석의 예약 상태를 관리하는 시스템을 설계해야 한다고 가정합니다. 좌석은 1부터 n까지 번호가 매겨져 있습니다. 따라서 다음과 같은 기능으로 SeatReserveManager 클래스를 구현해야 합니다. −

  • n을 입력으로 사용하고 1에서 n까지 번호가 매겨진 n개의 좌석을 관리할 객체를 초기화하는 생성자. 처음에는 모든 좌석을 사용할 수 있습니다.

  • reserved(), 이것은 가장 작은 번호의 예약되지 않은 좌석을 가져온 다음 예약하고 그 번호를 반환합니다.

  • unreserve(seatNumber), 이는 givenseatNumber로 하나의 지정 좌석을 예약 해제합니다.

따라서 입력이 다음과 같으면

  • obj =SeatReserveManager(7)

  • obj.reserve()

  • obj.reserve()

  • obj.reserve()

  • obj.unreserve(2)

  • obj.unreserve(5)

  • obj.reserve()

  • obj.reserve()

그러면 출력은 1, 2, 3, 2, 5가 됩니다. 처음에는 3개의 좌석 1, 2, 3을 예약한 다음 2와 5를 예약하지 않았지만 5는 아직 예약하지 않고 다음에 5를 예약합니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • Constructor() 를 정의하십시오. n

    소요됩니다.
  • current_seat :=0

  • empty_seats :=새 목록

  • Reserve() 함수를 정의합니다. 시간이 걸립니다

  • empty_seats의 길이> 0이면

    • s :=최소 empty_seats

    • empty_seats에서 s 삭제

    • 반환 s

  • current_seat :=current_seat + 1

  • current_seat 반환

  • unreserve() 함수를 정의합니다. 이것은 자리를 차지할 것입니다.

  • empty_seats

    끝에 seatNumber 삽입

예시

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

class SeatReserveManager:
   def __init__(self, n):
      self.current_seat = 0
      self.empty_seats = []

   def reserve(self):
      if len(self.empty_seats) > 0:
         s = min(self.empty_seats)
         self.empty_seats.remove(s)
         return s
      self.current_seat += 1

      return self.current_seat

   def unreserve(self, seatNumber):
      self.empty_seats.append(seatNumber)

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

입력

obj = SeatReserveManager(7)
print(obj.reserve())
print(obj.reserve())
print(obj.reserve())
obj.unreserve(2)
obj.unreserve(5)
print(obj.reserve())
print(obj.reserve())

출력

1 2 3 2 5