[백준] 18258 큐 2

cheeeese·2022년 4월 20일
0

코딩테스트 연습

목록 보기
84/151
post-thumbnail

📖 문제

https://www.acmicpc.net/problem/18258

💻 내 코드

import sys
from collections import deque

n=int(sys.stdin.readline())
queue=deque([])

for _ in range(n):
    order=sys.stdin.readline().split()
    w=order[0]

    if w=='push':
        queue.append(order[1])
    elif w=='pop':
        if len(queue)==0:
            print(-1)
        else:
            print(queue.popleft())
    elif w=='size':
         print(len(queue))
    elif w=='empty':
        if len(queue)==0:
            print(1)
        else:
            print(0)
    elif w=='front':
        if len(queue)==0:
            print(-1)
        else:
            print(queue[0])
    elif w=='back':
        if len(queue)==0:
            print(-1)
        else:
            print(queue[-1])

💡 풀이

원래 제출했던 코드

import sys
n=int(sys.stdin.readline())
queue=[]

for _ in range(n):
    order=sys.stdin.readline().split()
    w=order[0]

    if w=='push':
        queue.insert(0,order[1])
    elif w=='pop':
        if len(queue)==0:
            print(-1)
        else:
            print(queue.pop(-1))
    elif w=='size':
         print(len(queue))
    elif w=='empty':
        if len(queue)==0:
            print(1)
        else:
            print(0)
    elif w=='front':
        if len(queue)==0:
            print(-1)
        else:
            print(queue[-1])
    elif w=='back':
        if len(queue)==0:
            print(-1)
        else:
            print(queue[0])

--> 시간 초과

  • collections의 deque 사용

    • popleft를 통해 가장 앞에 있는 정수 pop
    • appendleft: 데이터 앞에 삽입 가능

0개의 댓글