반응형
문제
https://www.acmicpc.net/problem/10866
이전 큐의 구현때와는 달리 명령어수가 작아서 그대로 구현하면 될거같았지만 시간초과
가 떴다.파이썬 배열의 구조상 가장앞의 인자를 제거하거나 가장앞에 인자를 넣는경우
O(n)의 시간이 걸리므로 굉장히 오래걸린다.이전에는 top을 표시하는 방식으로 구현햇
는데 이번에는 collections모듈에 deque를 사용해봐야겠다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 | import sys from collections import deque class MyDeque: def __init__(self): self.deque=deque() self.len=0 def push_front(self,x): self.deque.appendleft(x) self.len+=1 def push_back(self,x): self.deque.append(x) self.len += 1 def pop_front(self): if self.len==0: return -1 else: self.len -= 1 return self.deque.popleft() def pop_back(self): if self.len == 0: return -1 else: self.len -= 1 return self.deque.pop() def size(self): return self.len def empty(self): if self.len==0: return 1 else: return 0 def front(self): if self.len==0: return -1 else: return self.deque[0] def back(self): if self.len==0: return -1 else: return self.deque[self.len-1] n=int(input()) mydeque=MyDeque() while n>0: n-=1 command=list(sys.stdin.readline().split()) if command[0]=='push_front': mydeque.push_front(command[1]) elif command[0]=='push_back': mydeque.push_back(command[1]) elif command[0] == 'pop_front': print(mydeque.pop_front()) elif command[0] == 'pop_back': print(mydeque.pop_back()) elif command[0] == 'size': print(mydeque.size()) elif command[0] == 'empty': print(mydeque.empty()) elif command[0] == 'front': print(mydeque.front()) elif command[0] == 'back': print(mydeque.back()) | cs |
반응형
'알고리즘(python) > 자료구조' 카테고리의 다른 글
[Python]Deque 백준 5430 (0) | 2020.01.18 |
---|---|
[Python]Deque 백준 1021 (0) | 2020.01.17 |
[Python]Queue 백준 1966 (0) | 2020.01.17 |
[Python]Queue 백준 11866 (0) | 2020.01.16 |
[Python]Queue 백준 2164 (0) | 2020.01.15 |
최근댓글