파이썬으로 배우는 알고리즘 책을 공부하며 풀었던 LeetCode문제들을 재정리해보자.
# 문제 설명
225번 Implement Stack using Queues 는 스택을 이용해 다음 연산을 지원하는 큐를 구현하는 문제이다.
# 풀이방법 1 (내 풀이)
class MyStack:
def __init__(self):
self.q = deque()
def push(self, x: int) -> None:
self.q.append(x)
def pop(self) -> int:
return self.q.pop()
def top(self) -> int:
return self.q[-1]
def empty(self) -> bool:
if len(self.q) :
return False
else :
return True
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
| 아이디어 |
collections의 deque의 기능을 이용하여 문제를 풀이하였다.
# 풀이방법 2 (책 풀이)
위의 나의 풀이는 실제 큐의 특성을 이용하지 않고 작성하였다.
책의 풀이에서는 큐의 연산만을 사용하여 큐만의 특성으로 문제를 풀이하였다.
요소를 삽입하고 맨 앞에 두는 상태로 재정렬하는 부분과, pop할때 popleft()하는 부분을 주목해서 보면 된다.
class MyStack:
def __init__(self):
self.q = collections.deque()
def push(self, x: int) -> None:
self.q.append(x)
# 요소 삽입 후 맨 앞에 두는 상태로 재정렬
for _ in range(len(self.q) -1) :
self.q.append(self.q.popleft())
def pop(self) -> int:
return self.q.popleft()
def top(self) -> int:
return self.q[0]
def empty(self) -> bool:
return len(self.q) == 0
# Your MyStack object will be instantiated and called as such:
# obj = MyStack()
# obj.push(x)
# param_2 = obj.pop()
# param_3 = obj.top()
# param_4 = obj.empty()
# 결과
'#️⃣ Project 및 개발일지 > Algorithm 문제 풀이' 카테고리의 다른 글
[LeetCode] 739. Daily Temperatures 일일 온도 (0) | 2022.03.17 |
---|---|
[LeetCode] 622. Design Circular Queue 원형 큐 디자인 (0) | 2022.02.26 |
[LeetCode] 20. Valid Parentheses 유효한 괄호 (0) | 2022.02.23 |
[LeetCode] 21. Merge Two Sorted List 두 정렬 리스트 병합 (0) | 2022.02.21 |
[LeetCode] 92. Reverse Linked List II 역순 연결 리스트Ⅱ (0) | 2022.02.21 |