Week 01 ~ 04 : 알고리즘 문제 풀이

파이썬 백준 18258 큐2

정글러 2021. 11. 15. 22:45
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의 원소들이 존재는 하지만 더이상 아무 기능도 하지 않게 된다.

이걸 생각한 사람은 천잰가?