알고리즘 풀이/백준

[ 백준 18258 ] 큐2 - Python

12.tka 2020. 6. 6. 22:56
728x90

문제 보기

이 문제는 큐(queue) 문제이며, 문제 이름을 통해서도 유추가 가능하다.

 

큐는 먼저 집어넣은 데이터가 먼저 나오는 FIFO 구조로 저장하는 형식을 말한다.

 

문제를 구현하는 알고리즘은 크게 어렵지 않았다.

문제에서 요구하는 6가지 명령을 구현하면 된다.

push와 pop은 이미 구현된 append, popleft를 활용하였으며, size와 empty는 원소의 개수를 세는 변수(count)를 따로 둬서 구현하였다. front와 back은 큐가 비어있는지 확인하고 출력하면 된다.

 

명령 구현
push append
pop popleft
size count 활용
empty count 활용
front 단순 출력
back 단순 출력

 

코드

from collections import deque
import sys


if __name__ == "__main__":

    N = int(input())  # 명령의 수
    order = [list(map(str, sys.stdin.readline().split())) for _ in range(N)]

    q = deque()
    count = 0  # 큐에 들어있는 정수의 개수
    # 명령 진행
    for i in range(len(order)):
        if order[i][0] == "push":
            q.append(int(order[i][1]))
            count += 1
        elif order[i][0] == "pop":
            if count == 0:  # 큐에 들어있는 정수가 없는 경우
                print(-1)
            else:
                print(q.popleft())  # pop 결과
                count -= 1
        elif order[i][0] == "size":
            print(count)  # 큐에 들어있는 정수의 개수
        elif order[i][0] == "empty":
            if count == 0:
                print(1)  # 큐가 비어있으면
            else:
                print(0)
        elif order[i][0] == "front":
            if count == 0:
                print(-1)
            else:
                print(q[0])
        elif order[i][0] == "back":
            if count == 0:
                print(-1)
            else:
                print(q[len(q) - 1])

주의할 점

입력을 sys 형식이 아닌 input으로 했을 때 시간 초과가 발생하였다. 또한 count 변수는 len 함수를 쓰는 과정에서 시간 초과가 발생할 것 같아서 선언하였다. 

728x90