백준 큐 10845번

안녕하세요. GDSC 머신러닝 멤버 김민찬입니다.

큐는 줄을 생각하면 쉽게 이해할 수 있습니다.
먼저 넣은 데이터가 먼저 빠져나오게 되고 FIFO(First In First Out) 구조라고도 합니다
프린터의 출력이나, 프로세스 관리 등 입력된 순서대로 처리되야 하는 경우에 사용된다고 합니다.

image


아래의 명령들은 이전 스택에서와 같이 큐의 구현 조건입니다.

push X: 정수 X를 큐에 넣는 연산이다.
pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
size: 큐에 들어있는 정수의 개수를 출력한다.
empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.


저번과 같이 직접 클래스를 통해 구현하였고, 리스트를 사용하였습니다.

class Queue:
    def __init__(self):
        self.queue_list = []

    def push(self,num):
        self.queue_list.append(num)
    
    def pop(self):
        if self.queue_list:
            print(self.queue_list[0])
            del self.queue_list[0]
        else:
            print("-1")
    
    def size(self):
        print(len(self.queue_list))

    def empty(self):
        if self.queue_list:
            print("0")
        else:
            print("1")

    def front(self):
        if self.queue_list:
            print(self.queue_list[0])
        else:
            print("-1")
    
    def back(self):
        if self.queue_list:
            print(self.queue_list[-1])
        else:
            print("-1")
        
import sys

N = int(sys.stdin.readline())
q = Queue()

for _ in range(N):
    command = sys.stdin.readline().split()
    if command[0] == "push":
        q.push(command[1])
    elif command[0] == "pop":
        q.pop()
    elif command[0] == "size":
        q.size()
    elif command[0] == "empty":
        q.empty()
    elif command[0] == "front":
        q.front()
    else:
        q.back()


이번주에는 업로드를 깜빡해서 늦었지만 다음주부터는 꼭 꼭 잊지 않고 올리도록 하겠습니다.
화이팅 !