상세 컨텐츠

본문 제목

백준 10845 - 큐 (자료구조, 파이썬)

Tech/백준 단계별 문제

by 2020. 12. 27. 13:17

본문

큐(Queue)

한쪽 끝에서만 자료를 넣고 다른 한쪽 끝에서만 뺄 수 있는 자료구조

먼저 넣은 것이 가장 먼저 나오기 때문에 First In First Out(FIFO) 라고도 한다.

 

queue

 

www.acmicpc.net/problem/10845

 

10845번: 큐

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

www.acmicpc.net

 

 

import sys

# push X: 정수 X를 큐에 넣는 연산이다.
def push(queue, x):
    queue.append(x)
    return queue

# pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
def pop(queue):
    if(len(queue)!= 0):
        print(queue.pop(0))
    else:
        print(-1)
    return queue

# size: 큐에 들어있는 정수의 개수를 출력한다.
def size(queue):
    print(len(queue))

# empty: 큐가 비어있으면 1, 아니면 0을 출력한다.
def empty(queue):
    if(len(queue) != 0):
        print(0)
    else:
        print(1)

# front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
def front(queue):
    if(len(queue) != 0):
        print(queue[0])
    else:
        print(-1)

# back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.
def back(queue):
    if(len(queue) != 0):
        print(queue[-1])
    else:
        print(-1)


sys.stdin.readline()
queue = []

for line in sys.stdin:
    if ("push" in line):
        push(queue, line.split()[-1])
    elif ("pop" in line):
        pop(queue)
    elif ("size" in line):
        size(queue)
    elif ("empty" in line):
        empty(queue)
    elif ("front" in line):
        front(queue)
    elif ( "back" in line ):
        back(queue)
    else :
        print("error")

관련글 더보기