import sys
input = sys.stdin.readline
que = []
point = 0
def stk(inp) :
global point
if inp[0] == 'push' :
que.append(int(inp[1]))
elif inp[0] == 'pop' :
if len(que) == point :
print(-1)
else :
print(que[point])
point = point + 1
elif inp[0] == 'size' :
print(len(que) - point)
elif inp[0] == 'empty' :
if len(que) == point :
print(1)
else :
print(0)
elif inp[0] == 'front' :
if len(que) == point :
print(-1)
else :
print(que[point])
elif inp[0] == 'back' :
if len(que) == point :
print(-1)
else :
print(que[-1])
n = int(input())
for i in range(n) :
x = list(input().split())
stk(x)
|
백준 10828 스택처럼 그냥 하라는대로 하면 되겠지 하고 구현했다가 시간초과가 떴다.
큐는 스택과는 다르게 [0]을 날리기 때문에 del que[0]을 하면 삭제 후 재정렬에 n의 시간이 들기 때문이라고 한다.
개선방법으로는 point=0를 만든 뒤 [0]을 지울 때 [point]를 지우고 point를 +1하는 것이 있다.
이럼 point 밑 index의 원소들이 존재는 하지만 더이상 아무 기능도 하지 않게 된다.
이걸 생각한 사람은 천잰가?
'Week 01 ~ 04 : 알고리즘 문제 풀이' 카테고리의 다른 글
파이썬 백준 11866 요세푸스 문제 0 (0) | 2021.11.15 |
---|---|
파이썬 백준 2164 카드2 (0) | 2021.11.15 |
파이썬 백준 2812 크게 만들기 (0) | 2021.11.15 |
파이썬 백준 6549 히스토그램에서 가장 큰 직사각형 (0) | 2021.11.13 |
파이썬 백준 10000 원 영역 (0) | 2021.11.13 |