코딩테스트/LeetCode
[LeetCode] Implement Queue using Stacks(스택을 이용한 큐 구현 )
jungmin.park
2023. 10. 19. 17:23
https://leetcode.com/problems/implement-queue-using-stacks/description/
- void push(int x) : 요소 x를 대기열 뒤쪽으로 푸시한다.
- int pop() : 대기열의 앞부분에서 요소를 제거하고 반환
- int peek() : 대기열의 맨 앞에 있는 요소를 반환
- boolean empty() : 대기열이 비어 있으면 true 반환하고, 그렇지 않으면 false을 반환한다.
<리스트 구현>
- 파이썬은 리스트가 큐 기능을 흉내낼 수 있기 때문에 리스트 구현으로 스택을 만들어 보았다.
생성자 만들기
class MyQueue:
def __init__(self):
self.k = []
삽입기능 구현하기
def push(self, x):
self.k.append(x)
삭제기능 구현하기
- 스택에 데이터가 존재 할 경우에만 반환을 해주기로 했다.
def pop(self):
if self.k:
n = self.k[0]
self.k.remove(n)
return n
가장 맨 앞에 있는 요소 구현
def peek(self):
if self.k:
return self.k[0]
비어있는지 확인하는 기능 구현
def empty(self):
if len(self.k) == 0:
return True
else:
return False
<Deque로 구현>
- 리스트와 구현방식은 비슷하지만 성능을 확인해보기 위해 바꿔보았다.
from collections import deque
class MyQueue:
def __init__(self):
self.dq = deque()
def push(self, x):
self.dq.append(x)
def pop(self):
if self.dq:
return self.dq.popleft()
def peek(self):
if self.dq:
return self.dq[0]
def empty(self):
if len(self.dq) == 0:
return True
else:
return False
- 다른점은 pop 할 때 popleft() 함수를 사용한점