[Python] 백준 10866번 덱

이세령·2023년 5월 25일
0

알고리즘

목록 보기
13/43

문제

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

풀이과정

  • deque를 이용하면 쉽게 풀 수 있었다.
import sys
from collections import deque
n = int(sys.stdin.readline())
# push_front X -> 입력
# push_back X
# pop_front -> 맨 앞의 정수 빼고 출력, 없으면 -1 출력
# pop_back
# size 명령일 경우-> 들어있는 정수의 개수
# empty 명령일 경우 -> 비어있으면 1, 아니면 0 출력
# front 명령일 경우 -> 가장 앞에 있는 정수 출력, 없으면 -1 출력
# back 명령일 경우 -> 가장 뒤에 있는 정수 출력, 없으면 -1 출력

class DeQueue:
    def __init__(self):
        self.dequeue = deque()

    def push_front(self, a):
        self.dequeue.appendleft(a)

    def push_back(self, a):
        self.dequeue.append(a)

    def pop_front(self):
        if self.dequeue:
            print(self.dequeue[0])
            self.dequeue.popleft()
        else:
            print(-1)

    def pop_back(self):
        if self.dequeue:
            print(self.dequeue[-1])
            self.dequeue.pop()
        else:
            print(-1)

    def size(self):
        print(len(self.dequeue))

    def empty(self):
        if self.dequeue:  # 비어있지 않으면
            print(0)
        else:
            print(1)

    def front(self):
        if self.dequeue:
            print(self.dequeue[0])
        else:
            print(-1)

    def back(self):
        if self.dequeue:
            print(self.dequeue[-1])
        else:
            print(-1)

myDeQueue = DeQueue()
for _ in range(n):
    command = sys.stdin.readline().split()
    if command[0] == 'push_front':
        myDeQueue.push_front(int(command[1]))
    if command[0] == 'push_back':
        myDeQueue.push_back(int(command[1]))

    if command[0] == 'pop_front':
        myDeQueue.pop_front()
    if command[0] == 'pop_back':
        myDeQueue.pop_back()

    if command[0] == 'size':
        myDeQueue.size()
    if command[0] == 'empty':
        myDeQueue.empty()
    if command[0] == 'front':
        myDeQueue.front()
    if command[0] == 'back':
        myDeQueue.back()

메모리: 34216 KB
시간: 72ms

연속으로 자료구조를 사용해보는 문제들이였기에 비슷하지만 다양한 기능을 확인할 수 있었다.

profile
https://github.com/Hediar?tab=repositories

0개의 댓글