본문 바로가기

Programming [Python]/백준 알고리즘 솔루션

#363 백준 파이썬 [18258] 큐 2

https://www.acmicpc.net/problem/18258

 

SOLUTION

큐를 구현할 때 리스트의 start 위치를 하나씩 바꾸어 가면서 하면 빠른 시간 내에 풀 수 있다.

큐의 가장 큰 문제는 리스트의 앞에서 자료를 뺄 때 O(n)의 시간이 걸린다는 점.

그러나 덱deque과 pypy로 풀리기에 pass하였다.

PYTHON CODE

from collections import deque
import sys

class fire:
    def __init__(self):
        self.queue = deque()

    def push(self, num):
        self.queue.append(num)
    
    def pop(self):
        if self.queue:
            return self.queue.popleft()
        else:
            return -1

    def size(self):
        return len(self.queue)

    def empty(self):
        if self.queue:
            return 0
        else:
            return 1
        
    def front(self):
        if not self.queue:
            return -1
        else:
            return self.queue[0]
        
    def back(self):
        if not self.queue:
            return -1
        else:
            return self.queue[-1]
        
case = int(input())
test = fire()
source = [list(map(str, sys.stdin.readline().split())) for _ in range(case)]

for i in source:
    cmd = i[0]
    
    if len(i) == 2:
        test.push(i[1])
    elif cmd =="size":
        print(test.size())
    elif cmd =="empty":
        print(test.empty())
    elif cmd =="pop":
        print(test.pop())
    elif cmd =="front":
        print(test.front())
    elif cmd =="back":
        print(test.back())