티스토리 뷰

문제


다음 연산을 제공하는 원형 데크를 디자인하라.

  • MyCircularDeque(k): 데크사이즈를 k로 지정하는 생성자다.
  • insertFront() : 데크 처음에 아이템을 추가하고 성공할 경우 true를 리턴한다.
  • insertLast() : 데크 마지막에 아이템을 추가하고 성공할 경우 true를 리턴한다.
  • deleteFromt() : 데크 처음에 아이템을 삭제하고 성공할 경우 true를 리턴한다.
  • deleteLast() : 데크 마지막에 아이템을 삭제하고 성공할 경우 true를 리턴한다.
  • getFromt() : 데크츼 첫 번째 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다.
  • getRear() : 데크의 마지막 아이템을 가져온다. 데크가 비어있다면 -1을 리턴한다.
  • isEmpty() : 데크가 비어 있는지 여부를 판별한다.
  • isFull() : 데크가 가득 차 있는지 여부를 판별한다.

leetcode 641 - Design Circular Deque


코드

class MyCircularQueue:

    def __init__(self, k: int):
        self.q = [None] * k 
        self.maxlen = k
        self.p1 = 0
        self.p2 = 0


    # enQueue(): 리어 포인터 이동
    def enQueue(self, value: int) -> bool:
        if self.q[self.p2] is None:
            self.q[self.p2] = value
            self.p2 = (self.p2 + 1) % self.maxlen
            return True
        else:
            return False

    # deQueue(): 프론트 포인터 이동
    def deQueue(self) -> bool:
        if self.q[self.p1] is None:
            return False
        else:
            self.q[self.p1] = None
            self.p1 = (self.p1 + 1) % self.maxlen
            return True

    def Front(self) -> int:
        return -1 if self.q[self.p1] is None else self.q[self.p1]

    def Rear(self) -> int:
        return -1 if self.q[self.p2 - 1] is None else self.q[self.p2-1]

    def isEmpty(self) -> bool:
        return self.p1 == self.p2 and self.q[self.p1] is None

    def isFull(self) -> bool:
        return self.p1 == self.p2 and self.q[self.p1] is not None

# Your MyCircularQueue object will be instantiated and called as such:
# obj = MyCircularQueue(k)
# param_1 = obj.enQueue(value)
# param_2 = obj.deQueue()
# param_3 = obj.Front()
# param_4 = obj.Rear()
# param_5 = obj.isEmpty()
# param_6 = obj.isFull()
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함