백준 10845(파이썬):큐

백준 10845번 문제 정리글 입니다.

문제 출처-https://www.acmicpc.net/problem/10845

문제 내용

백준 10845번

나의 풀이

    def push(queue,num):
        queue.append(num)

    def pop(queue):
        if len(queue)>0:
            answer=queue.pop(0)
            return print(answer)
        else:
            return print(-1)

    def size(queue):
        answer=len(queue)
        return print(answer)

    def empty(queue):
        if len(queue)>0:
            return print(0)
        else:
            return print(1)

    def front(queue):
        if len(queue)>0:
            answer=queue[0]
            return print(answer)
        else:
            return print(-1)

    def back(queue):
        if len(queue)>0:
            answer=queue[-1]
            return print(answer)
        else:
            return print(-1)

    n= int(input())
    queue=[]
    for i in range(n):
        order=list(input().split())
        if order[0]=='push':
            push(queue,order[1])
        elif order[0]=='pop':
            pop(queue)
        elif order[0]=='size':
            size(queue)
        elif order[0]=='empty':
            empty(queue)
        elif order[0]=='front':
            front(queue)
        else:
            back(queue)

단순히, 리스트 연산에 append,pop,len등의 연산자를 이용하여 큐를 구현했다.

그런데 처음에 시간초과가 나와 의문이들어서 찾아보니 input()으로하면 시간초과가 발생한다고 한다… 따라서, sys.stdin.readline()을 사용해 줘야 한다…. 또, push 구현시 append말고 insert를 사용할 수 있다

풀이를 본 후

input과 sys.stdin.readline 의 차이에 대해서 한번 알아볼 수 있는 좋은 문제였다…

해결한 후

백준에서 문제를 풀때는 시간초과를 방지하기 위해 sys.stdin.readline을 사용하는 것이 좋다…

참조 링크