문제 링크 : link
문제 티어 : 실버4
딱히.. 그냥 collections.deque를 잘 사용하면 된다.
다만 저렇게 무식하게 if ~ elif를 사용하는 것만이 답일까..
뭔가 입력된 함수명으로 Deq클래스의 함수를 호출하는 법이 있을 것 같은데, -> 실제로 있기도 한데..
그렇게 짜는 게 맞는지 모르겠다.
import sys
from collections import deque
class Deq:
def __init__(self):
self.deq = deque([])
def push_front(self, x):
self.deq.append(x)
def push_back(self, x):
self.deq.appendleft(x)
def pop_front(self):
if not self.deq:
return -1
return self.deq.pop()
def pop_back(self):
if not self.deq:
return -1
return self.deq.popleft()
def size(self):
return len(self.deq)
def empty(self):
if self.deq:
return 0
return 1
def front(self):
if not self.deq:
return -1
return self.deq[-1]
def back(self):
if not self.deq:
return -1
return self.deq[0]
def main():
deq = Deq()
N = int(input())
for _ in range(N):
cmds = sys.stdin.readline().strip().split(' ')
cmd = cmds[0]
if cmd == 'push_front':
x = cmds[1]
deq.push_front(x)
elif cmd == 'push_back':
x = cmds[1]
deq.push_back(x)
elif cmd == 'pop_front':
result = deq.pop_front()
print(result)
elif cmd == 'pop_back':
result = deq.pop_back()
print(result)
elif cmd == 'size':
result = deq.size()
print(result)
elif cmd == 'empty':
result = deq.empty()
print(result)
elif cmd == 'front':
result = deq.front()
print(result)
elif cmd == 'back':
result = deq.back()
print(result)
if __name__ == '__main__':
main()
[ 알고리즘 ] 백준 1874 - 스택 수열 (1) | 2022.09.22 |
---|---|
[ 알고리즘 ] 백준 1158 - 요세푸스 문제 (1) | 2022.09.21 |
댓글 영역