반응형
https://leetcode.com/problems/implement-stack-using-queues/
Think
뭘로 뭘 구현해라..라는 문제 형식 자체가 낯설어서
읽어보는 것만으로 공부였던 문제
뭘 써서 구현해야 할 지도 몰랐다
ㅋㅋㅋㅋ...~
게다가 deque도 모르고~
그리고 리트코드에서 적어둔 코멘트들 읽으면서 풀 것..
문제 좀 읽어라
Solution
class MyStack(object):
#맨 왼쪽을 스택의 맨 위라고 생각하고 구현한다.
#deque를 사용하지만 queue라고 생각하고 queue의 기능만 사용하여 구현한다.
def __init__(self):
self.q = collections.deque() #queue라고 생각하기
def push(self, x):
"""
:type x: int
:rtype: None
"""
self.q.append(x) #맨 오른쪽에 추가됨. 정렬 다시 해줘야 함(queue의 기능만을 사용해서).
#정렬 다시
#queue의 기능만 사용할 수 있으므로 맨 왼쪽의 원소를 차례대로 빼서 맨 오른쪽에 다시 삽입한다.
for _ in range(len(self.q) - 1) : #맨 마지막에 추가한 원소 직전까지만 반복
tmp = self.q.popleft()
self.q.append(tmp)
def pop(self):
"""
:rtype: int
"""
return self.q.popleft() #맨 왼쪽 하나 빼오기
def top(self):
"""
:rtype: int
"""
return self.q[0] #맨 왼쪽 하나 삭제없이 반환하기
def empty(self): #비어있는 상태인지 확인
"""
:rtype: 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()
Get
- 파이썬 자료형 라이브러리 collections
- deque 데크 : 양방향 큐. 양쪽 모두 넣고 뺄 수 있으며, 큐와 스택으로 모두 활용할 수 있다.
좋은 데크 설명글
https://chaewonkong.github.io/posts/python-deque.html
반응형
'DSA > Algorithm' 카테고리의 다른 글
[LeetCode 771] Jewels and Stones (0) | 2022.09.27 |
---|---|
[LeetCode 622] Design Circular Queue (0) | 2022.09.27 |
[LeetCode 316] Remove Duplicate Letters (RE 다른풀이) (0) | 2022.09.27 |
[LeetCode 19] Reverse Linked List II (0) | 2022.09.26 |
[LeetCode 42] Trapping Rain Water (1) | 2022.09.20 |