10866. 덱

곽수경·2023년 10월 26일

10866. 덱

문제

정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

  • push_front X: 정수 X를 덱의 앞에 넣음
  • push_back X: 정수 X를 덱의 뒤에 넣음
  • pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력.
  • pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력.
  • size: 덱에 들어있는 정수의 개수를 출력.
  • empty: 덱이 비어있으면 1을, 아니면 0을 출력.
  • front: 덱의 가장 앞에 있는 정수를 출력. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력.
  • back: 덱의 가장 뒤에 있는 정수를 출력. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력.

입력

첫째 줄에 주어지는 명령의 수 N이 주어지고 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어짐.

출력

push_front, push_back 명령을 제외한 나머지 명령에서 출력해야하는 내용을 출력

풀이

Deque 클래스를 구현하고 그 안에 각 명령들이 수행해야하는 동작을 넣었음.
그리고 if문으로 각각의 명령들을 수행함.

import sys

class Deque:
    def __init__(self):
        self.deque = []
    
    def push_front(self, x):
        self.deque.insert(0, x)
        
    def push_back(self, x):
        self.deque.append(x)

    def pop_front(self):
        if len(self.deque) == 0:
            return -1
        return self.deque.pop(0);
    
    def pop_back(self):
        if len(self.deque) == 0:
            return -1
        return self.deque.pop();
        
    def size(self):
        return len(self.deque)
    
    def empty(self):
        return int(len(self.deque) == 0)
    
    def front(self):
        if len(self.deque) == 0:
            return -1
        return self.deque[0]
    
    def back(self):
        if len(self.deque) == 0:
            return -1
        return self.deque[-1]
        

n = int(sys.stdin.readline())
inputs = [sys.stdin.readline().rstrip() for _ in range(n)]
    
d = Deque()

def doDeque(command):
    command = command.split(' ')
    if command[0] == 'pop_front': print(d.pop_front())
    elif command[0] == 'pop_back': print(d.pop_back())
    elif command[0] == 'size': print(d.size())
    elif command[0] == 'empty': print(d.empty())
    elif command[0] == 'front': print(d.front())
    elif command[0] == 'back': print(d.back())
    elif command[0] == 'push_front': d.push_front(command[1])
    else: d.push_back(command[1])

for input in inputs:
    doDeque(input)
profile
공부 기록

0개의 댓글