본문 바로가기
  • The future is ours
코딩(파이썬)_백준

백준 알고리즘 10845번 큐(파이썬 , Python)

by scarlet bloom flowers once more 2022. 3. 25.
반응형

스택문제를 풀어봤으면, 관련된 큐와 덱 문제도 풀어보도록하자. 덱 문제는 스택과 큐를 복합한 개념이라, 다음 글에 또 작성하도록 하겠다.

우선 스택은 프링글스 통과 같이, 넣은 순서의 역순대로 나오는 것이라면, 큐는 넣은 순서대로 나온다. 예를 들어서 1,2,3,4의 순서대로 숫자를 삽입했다면, 나오는 것도 1,2,3,4 번이 순서대로 나온다. 놀이공원에서 놀이기구를 타기 위해 줄을 섰다고 생각하면 될 것 같다.

이에 적용되는 명령은, push, pop, size, empty, front, back 이렇게 존재한다. 우선 식을 적고, 각각 어떠한 역할을 하는지 살펴보도록 하자.

///

import sys
num=int(input())
que=[]
for i in range(num):
    new=sys.stdin.readline().split()
    ch=new[0]

    if ch=='push':
        que.append(new[1])
    elif ch=='pop':
        if len(que)!=0:
            print(que.pop(0))
        else:
            print(-1)
    elif ch=='size':
        print(len(que))
    elif ch=='empty':
        if len(que)==0:
            print(1)
        else:
            print(0)
    elif ch=='front':
        if len(que)==0:
            print(-1)
        else:
            print(que[0])
    elif ch=='back':
        if len(que)==0:
            print(-1)
        else:
            print(que[-1])

///

이 식에는 위에서 말한 모든 명령이 다 들어가있다.

작동 방식은, sys 단계에서 new에 들어갈 명령을 받고, 그 중 첫 소절을 떼어내 ch에 보관한다. 이 ch가 무엇인지를 밑에서 판단하는 것이다. 만약에 ch가 push라면, new의 두번째 소절을 큐에 더한다. 만약 ch가 pop이고 큐의 길이가 0이 아니라면, 가장 첫번째로 있는 숫자를 뺀다. pop이지만 큐의 길이가 0이라면 -1을 출력한다. ch가 size라면 큐의 길이를 세어 출력한다. ch가 empty이며 큐의 길이가 0이라면 1을 출력하고, 큐의 길이가 0이 아니라면 0을 출력한다.

ch가 front이고 큐의 길이가 0이라면 -1을 출력하고, 아니라면 큐 맨 앞에 있는 수를 출력한다. ch가 back이고 큐의 길이가 0이라면 -1을 출력하고 아니라면 큐의 맨 뒤에 있는 수를 출력한다.

스택과 비슷한 면모를 보이면서도, 숫자를 출력하는 부분에서는 정반대의 개념을 가지고 있는 큐에 대해 설명해보았다.

반응형