본문 바로가기
  • The future is ours
코딩(파이썬)_백준

백준 알고리즘 10866번 덱(파이썬, python)

by scarlet bloom flowers once more 2022. 4. 2.
반응형

이번 시간에는 스택과 큐에 이어, 덱을 배워보려고 한다.

덱의 개념은 스택과 큐를 합친것과 유사한데, 왜냐하면 push와 pop을 하는 부분이 각 끝단에 하나씩 위치하기 때문이다. 이게 무슨말이냐면, 앞과 뒤에 pushfront, pushback을 통해서 각각 대입할 수 있고, popfrront와 popback을 통해 각각 소거할 수 도 있다.

따라서 이번 덱 구문에서 사용가능한 명령은 pushfront, pushback, popfront, popback, size, empty, front, back 이렇게 여덟가지가 있다.

그러면 이 명령들을 사용해서 한번 코드를 짜보도록 하자.

///

import sys
num=int(input())
deque=[]
for i in range(num):
    new=sys.stdin.readline().split()
    ch=new[0]

    if ch=='push_front':
        deque.insert(0,new[1])
    elif ch=='push_back':
        deque.append(new[1])
    elif ch=='pop_front':
        if len(deque)!=0:
            print(deque.pop(0))
        else:
            print(-1)
    elif ch=='pop_back':
        if len(deque)!=0:
            print(deque.pop(-1))
        else:
            print(-1)
    elif ch=='size':
        print(len(deque))
    elif ch=='empty':
        if len(deque)==0:
            print(1)
        else:
            print(0)
    elif ch=='front':
        if len(deque)==0:
            print(-1)
        else:
            print(deque[0])
    elif ch=='back':
        if len(deque)==0:
            print(-1)
        else:
            print(deque[-1])

///

위 식에 대해 간단히 설명을 해보겠다.

push_front를 통해 덱 구문의 가장 앞에 새로운 수를 추가한다. push_back을 통해서는 덱의 마지막에 새로운 수를 이어준다.

pop_front를 통해 덱이 비었다면 -1을 출력, 아니라면 가장 앞에 있는 수를 출력한다. pop_back을 통해 덱이 비었다면 똑같이 -1을 출력, 아니라면 가장 뒤에 있는 수를 출력한다.

size구문을 통해선 덱의 길이를 출력한다. 

empty 구문을 통해서는(is_empty로 불리기도 한다.) 구문이 비어있다면 1을, 아니라면 0을 출력하도록 한다. 

front를 통해서는 덱의 길이가 0이라면 -1을 출력하고 아니라면 가장 첫번째로 있는 수를 출력한다.

back을 통해서 덱의 길이가 0이라면 -1을 출력하고, 아니라면 가장 뒤에 있는 수를 출력한다.

반응형