[백준] 덱 : 10866번 (파이썬)

뚝딱이 공학도·2022년 3월 12일
0

문제풀이_백준

목록 보기
85/159



문제



나의 답안

from collections import deque
import sys

input=sys.stdin.readline

num=int(input())
dq=deque()

def empty():
    if len(dq)!=0:
        return 0
    else:
        return 1

def size():
    return len(dq)

def front():
    if len(dq)!=0:
        print(dq[0])
    else:
        print(-1)
    
def back():
    if len(dq)!=0:
        print(dq[-1])
    else:
        print(-1)
        
for i in range(num):
    command=input().split()
    
    if command[0]=='push_front':
        dq.appendleft(command[1])
    elif command[0]=='push_back':
        dq.append(command[1])
        
    elif command[0]=='pop_front':
        if len(dq)!=0:
            print(dq[0])
            dq.popleft()
        else:
            print(-1)
    elif command[0]=='pop_back':
        if len(dq)!=0:
            print(dq[-1])
            dq.pop()
        else:
            print(-1)
            
    elif command[0]=='size':
        print(size())
        
    elif command[0]=='empty':
        print(empty())
        
    elif command[0]=='front':
        front()
        
    elif command[0]=='back':
        back()


접근 방법

  • 파이썬의 덱 모듈을 사용하는 방법을 알면 쉽게 풀 수 있는 문제이다.
  • 덱이란? 해당 글을 참고하여 공부하였다.
  • 이전에 풀었던 스택, 문제와 유사한 구조로 풀어주면 된다.
  • 덱의 앞에 데이터를 추가하기 위해서는 appendleft을 사용(push_front)하고, 덱의 가장 앞에 있는 데이터를 pop하기 위해서는 popleft을 사용(pop_front)해주면 된다.

0개의 댓글