반응형
https://leetcode.com/problems/design-circular-queue/
Think
왜 시작을 못하겠지?
경험이 부족함을 느꼈다
앞부분을 참고해서 적고나니 뒷부분은 얼추 구현해볼 수 있었다
공부하자!!
그리고 파이썬은 모든 내장 변수에 self를 붙여야 하는 점이
너무 불편하고 가독성도 안 좋은 것 같다
하지만 어쩌겠어 내가 고른 길인걸~~
사람은 적응을 하니까^^!
Solution
class MyCircularQueue(object):
def __init__(self, k):
"""
:type k: int
"""
self.q = [None] * k
self.maxlen = k
self.front = 0
self.rear = 0
def enQueue(self, value):
"""
:type value: int
:rtype: bool
"""
#자리가 남아있으면 삽입
if self.q[self.rear] is None :
self.q[self.rear] = value
#rear포인터를 이동하는데,
#원형큐이므로 맨 마지막일 때는 맨 처음으로 돌아가야 하므로
#maxlen으로 나눈 나머지값을 사용한다.
self.rear = (self.rear + 1) % self.maxlen
return True
#자리가 없으면 False
else :
return False
def deQueue(self):
"""
:rtype: bool
"""
#front가(큐가) 비어있지 않으면 front값 삭제 후 front 포인터 이동
if self.q[self.front] is not None :
self.q[self.front] = None
self.front = (self.front + 1) % self.maxlen
return True
#비어있다면 False
else :
return False
def Front(self):
"""
:rtype: int
"""
if self.q[self.front] is None :
return -1
else :
return self.q[self.front]
#이렇게 한 줄로 쓸 수도 있다.
# return -1 if self.q[self.front] is None else self.q[self.front]
def Rear(self):
"""
:rtype: int
"""
#rear는 항상 다음 빈자리를 가리키고 있으므로 -1위치에 값이 있음
if self.q[self.rear - 1] is None :
return -1
else :
return self.q[self.rear - 1]
def isEmpty(self):
"""
:rtype: bool
"""
return self.q[self.front] is None
def isFull(self):
"""
:rtype: bool
"""
return self.q[self.rear] 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()
Get
- 원형 큐
반응형
'DSA > Algorithm' 카테고리의 다른 글
[LeetCode 17] Letter Combinations of a Phone Number (1) | 2022.10.04 |
---|---|
[LeetCode 771] Jewels and Stones (0) | 2022.09.27 |
[LeetCode 225] Implement Stack using Queues (0) | 2022.09.27 |
[LeetCode 316] Remove Duplicate Letters (RE 다른풀이) (0) | 2022.09.27 |
[LeetCode 19] Reverse Linked List II (0) | 2022.09.26 |