배고픈 개발자 이야기

3.10845 큐 본문

알고리즘 문제/BAEKJOON

3.10845 큐

이융희 2019. 9. 14. 16:56
728x90

문제 - 큐를 구현하고 명령어에 맞게 출력하는 문제

push X : 정수 X를 큐에 삽입

pop : 큐의 앞에 있는 정수를 없애고, 그 수를 출력합니다. 없는 경우 -1 출력

size : 큐에 들어있는 원소의 개수 출력

empty : 큐가 비어있으면 1, 그렇지 않으면 0을 출력

front : 큐의 가장 앞에있는 원소 출력, 원소가 없는 경우에는 -1 출력

back : 큐의 가장 뒤에있는 원소 출력, 원소가 없는 경우에는 -1 출력

 

첫째 줄에는 N (1 <= N <= 10000)이 주어지고 그 수만큼 명령을 받아 들입니다.

출력값은 한줄에 하나씩 출력합니다.

 

# -*- coding:utf-8 -*-
import collections
import sys
from sys import stdin,stdout
sys.setrecursionlimit(1500)
 
d = collections.deque()
data = int(stdin.readline(15)) # 명령의 갯수

for _ in range(data):
    cmd = stdin.readline(25)
    if "push" in cmd:
        val = int(cmd.strip().split(" ")[1])
        d.append(val) # 오른쪽에 추가, 왼쪽에 추가하려면 appendleft()

    elif "pop" in cmd:
        if not d:
            stdout.write(str(-1)+"\n")
        else:
            stdout.write(str(d.popleft())+"\n") # 오른쪽 끝값을 가져오면서 제거, 왼쪽은 popleft()

    elif "size" in cmd:
        stdout.write(str(len(d))+"\n")

    elif "empty" in cmd:
        if not d:
            stdout.write(str(1)+"\n")
        else:
            stdout.write(str(0)+"\n")

    elif "front" in cmd:
        if not d:
            stdout.write(str(-1)+"\n")
        else:
            stdout.write(str(d[0])+"\n") # 가장 왼쪽값, -1 가장 오른쪽값

    elif "back" in cmd:
        if not d:
            stdout.write(str(-1)+"\n")
        else:
            stdout.write(str(d[-1])+"\n")

'알고리즘 문제 > BAEKJOON' 카테고리의 다른 글

1000. A+B (feat.C++)  (0) 2019.09.17
2.10828 스택  (0) 2019.09.14
1.4740  (0) 2019.09.14
0.1158 조세퍼스 문제 (feat.PYTHON)  (0) 2019.09.14
Comments