Notice
Recent Posts
Recent Comments
Link
오늘도 개발
44. Implement Queue using Stacks 본문
문제
두 개의 스택만 이용해서 FIFO 큐를 구현하시오.
(push, pop, peek, empty 메서드 구현)
해결 방식
instack에서는 enqueue 작업만,
outstack에서는 dequeue 작업만 실행.
enqueue 시
1) instack에 요소 바로 삽입.
dequeue 시
1) instack에 있는 요소를 모두 outstack에 가져옴.
2) outstack의 마지막 요소를 pop해서 반환
ex) instack = [1, 2, 3]이고 outstack = []인 경우 dequeue시 1이 나가야 함.
instack 요소를 pop해서 outstack에 넣기 => instack = [], outstack = [3, 2, 1]
outstack의 마지막 요소를 pop하면 1이 알맞게 나감.
class MyQueue:
def __init__(self):
self.instack = []
self.outstack = []
def push(self, x: int) -> None:
self.instack.append(x)
def pop(self) -> int:
# instack은 있는데 outstack에 아무것도 없을때만 instack 요소를 outstack으로 이동
if self.instack and not self.outstack:
while self.instack:
self.outstack.append(self.instack.pop())
return self.outstack.pop()
def peek(self) -> int:
# instack은 있는데 outstack에 아무것도 없을때만 instack 요소를 outstack으로 이동
if self.instack and not self.outstack:
while self.instack:
self.outstack.append(self.instack.pop())
return self.outstack[-1]
def empty(self) -> bool:
return not self.instack and not self.outstack
'자료구조 & 알고리즘 > Leetcode' 카테고리의 다른 글
| 46. Insert into a Binary Search Tree (0) | 2022.11.12 |
|---|---|
| 45. Implement Stack using Queues (0) | 2022.11.12 |
| 43. Target Sum (0) | 2022.11.09 |
| 42. Clone Graph(dfs) (0) | 2022.11.08 |
| 41. Min Stack (0) | 2022.10.31 |