알고리즘 스터디 큐-10845번
큐 알고리즘 10845번 풀이
study백준 큐 10845번
안녕하세요. GDSC 머신러닝 멤버 김민찬입니다.
큐는 줄을 생각하면 쉽게 이해할 수 있습니다.
먼저 넣은 데이터가 먼저 빠져나오게 되고 FIFO(First In First Out) 구조라고도 합니다
프린터의 출력이나, 프로세스 관리 등 입력된 순서대로 처리되야 하는 경우에 사용된다고 합니다.
아래의 명령들은 이전 스택에서와 같이 큐의 구현 조건입니다.
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()
이번주에는 업로드를 깜빡해서 늦었지만 다음주부터는 꼭 꼭 잊지 않고 올리도록 하겠습니다.
화이팅 !