(BOJ) 10866. 덱

jmboy713·2023년 4월 14일
0

코딩테스트

목록 보기
3/27

문제 풀이 idea

  • deque에서 제공하는 함수들을 사용하면 풀수 있는 쉬운 문제!
  • deque는 스택과 큐를 모두 사용할 수 있는 패키지이다.
  • popleft도 있듯이 appendleft도 있다!!!!

코드 풀이

import sys
from collections import deque

N=int(sys.stdin.readline().rstrip())
result=deque([])
for i in range(N):
    order=list(map(str,sys.stdin.readline().split()))

    if order[0]== "push_front": # 정수 X를 덱의 앞에 넣는다
        result.appendleft(order[1])

    elif order[0]=="push_back": # 정수 X를 덱의 뒤에 넣는다
        result.append(order[1])

    elif order[0]=="pop_front":#덱의 가장 앞에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
        if result!=deque([]):
            print(result.popleft())
        else:
            print(-1)

    elif order[0]=="pop_back":#덱의 가장 뒤에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
        if result!=deque([]):
            print(result.pop())
        else:
            print(-1)

    elif order[0]=="size":# 덱에 있는 정수의 갯수를 출력
        print(len(result))

    elif order[0]=="empty":#덱이 비어있으면 1, 아니면 0 출력
        print(int(result==deque([])))

    elif order[0]=="front": #덱의 가장 앞의 정수 출력, 없으면 -1 출력
        if result!=deque([]):
            print(result[0])
        else:
            print(-1)

    elif order[0]=="back": # 덱의 가장 뒤에 있는 정수를 출력. 없으면 -1 출력
        if result!=deque([]):
            print(result[-1])
        else:
            print(-1)

import sys
from collections import deque



def push_front(X): # 정수 X를 덱의 앞에 넣는다
    result.appendleft(X)

def push_back(X): # 정수 X를 덱의 뒤에 넣는다
    result.append(X)

def pop_front():#덱의 가장 앞에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
   if result!=deque([]):
       print(result.popleft())
   else:
       print(-1)

def pop_back():#덱의 가장 뒤에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
    if result!=deque([]):
       print(result.pop())
    else:
       print(-1)

def size():# 덱에 있는 정수의 갯수를 출력
    print(len(result))

def empty():#덱이 비어있으면 1, 아니면 0 출력
    print(int(result==deque([])))

def front(): #덱의 가장 앞의 정수 출력, 없으면 -1 출력
    if result!=deque([]):
       print(result[0])
    else:
       print(-1)

def back(): # 덱의 가장 뒤에 있는 정수를 출력. 없으면 -1 출력
    if result!=deque([]):
       print(result[-1])
    else:
       print(-1)

N=int(sys.stdin.readline())
result=deque([])
for i in range(N):
    order=list(map(str,sys.stdin.readline().split()))
    if order[0]== "push_front": # 정수 X를 덱의 앞에 넣는다
        push_front(order[1])
    elif order[0]=="push_back": # 정수 X를 덱의 뒤에 넣는다
        push_back(order[1])
    elif order[0]=="pop_front":#덱의 가장 앞에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
        pop_front()
    elif order[0]=="pop_back":#덱의 가장 뒤에 있는 수를 빼고 그 수를 출력한다. 만약 덱에 정수가 없으면 -1을 출력
        pop_back()
    elif order[0]=="size":# 덱에 있는 정수의 갯수를 출력
        size()
    elif order[0]=="empty":#덱이 비어있으면 1, 아니면 0 출력
        empty()
    elif order[0]=="front": #덱의 가장 앞의 정수 출력, 없으면 -1 출력
        front()
    elif order[0]=="back": # 덱의 가장 뒤에 있는 정수를 출력. 없으면 -1 출력
        back()
  • 함수를 정의한 후에 쓰니 메모리는 조금 늘었지만 시간이 줄었다.

profile
Python을 활용한 프로그래밍을 하고있습니다! 데이터분석, 인공지능, Django에 관한 정보를 업로드할 예정입니다. 잘부탁드립니다!!

0개의 댓글