[알고리즘] 백준 10866 : 덱 - S4

eternal moment·2023년 4월 5일
0

2023.04.06

import sys
input=sys.stdin.readline

from collections import deque

n=int(input())
queue = deque()

for i in range(n):
    a=input().split()

    if a[0]=="pop_front":
        if len(queue)==0:
            print(-1)
        else:
            print(queue.popleft())
    elif a[0]=="pop_back":
        if len(queue)==0:
            print(-1)
        else:
            print(queue.pop())
    elif a[0]=="size":
        print(len(queue))
    elif a[0]=="empty":
        if len(queue)==0:
            print(1)
        else:
            print(0)
    elif a[0]=="front":
        if len(queue)==0:
            print(-1)
        else:
            print(queue[0])
    elif a[0]=="back":
        if len(queue)==0:
            print(-1)
        else:
            print(queue[-1])
    elif a[0]=="push_front":
        queue.appendleft(a[1])
    elif a[0]=="push_back":
        queue.append(a[1])
  • 큐로 구현

다른 풀이

import sys
input=sys.stdin.readline

N=int(input())
X=[]

for _ in range(N) :
    A=list(input().split())
    if A[0]=="push_front" :
        X=[int(A[1])]+X

    elif A[0]=="push_back" :
        X.append(A[1])

    elif A[0]=="pop_front" :
        if len(X)==0 : print(-1)
        else :
            print(X[0])
            X.pop(0)

    elif A[0]=="pop_back" :
        if len(X)==0 : print(-1)
        else :
            print(X[-1])
            X.pop(-1)

    elif A[0]=="size" : print(len(X))

    elif A[0]=="empty" :
        if len(X)!=0 : print(0)
        else : print(1)

    elif A[0]=="front" :
        if len(X)==0 : print(-1)
        else : print(X[0])

    elif A[0]=="back" :
        if len(X)==0 : print(-1)
        else : print(X[-1])

check point

  • 리스트에서

    • 왼쪽 pop : arr.pop(-1)
    • 오른쪽 pop : arr.pop()
  • 큐/덱 에서

    • 왼쪽 pop : arr.popleft()
    • 오른쪽 pop : arr.pop()

  • 큐 : from collections import deque

  • 리스트에서 왼쪽 push : 본래 리스트에 push할 값 + 리스트 : X=[]+X

  • 여러개의 input 중 몇 개만 공백이 있을 때 구분 : a=문자열.split() 하면 자동으로 a[0]과 a[1]이 구분됨

0개의 댓글