[문제]

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

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net

 


[풀이]

클래스로 큐를 선언하고 문제에 나와있는 함수를 구현했다.

 

시간 단축을 위해 

input() 대신 sys.stdin.readline()

print() 대신 sys.stdout.write()

를 사용했다.

 


[코드]

import sys


class queue():
    def __init__(self):
        self.queue = []
        self.size = 0

    def push(self, x):
        self.queue.append(x)
        self.size += 1

    def pop(self):
        if self.size == 0:
            return -1
        else:
            self.size -= 1
            return self.queue.pop(0)

    def my_size(self):
        return self.size

    def empty(self):
        if self.size == 0:
            return 1
        else:
            return 0

    def front(self):
        if self.size == 0:
            return -1
        else:
            return self.queue[0]

    def back(self):
        if self.size == 0:
            return -1
        else:
            return self.queue[-1]


if __name__ == '__main__':
    queue = queue()
    n = int(sys.stdin.readline())
    for _ in range(n):
        command = sys.stdin.readline().split()
        if command[0] == 'push':
            queue.push(command[1])
        elif command[0] == 'pop':
            sys.stdout.write(str(queue.pop()))
            sys.stdout.write("\n")
        elif command[0] == 'size':
            sys.stdout.write(str(queue.my_size()))
            sys.stdout.write("\n")
        elif command[0] == 'empty':
            sys.stdout.write(str(queue.empty()))
            sys.stdout.write("\n")
        elif command[0] == 'front':
            sys.stdout.write(str(queue.front()))
            sys.stdout.write("\n")
        elif command[0] == 'back':
            sys.stdout.write(str(queue.back()))
            sys.stdout.write("\n")