개발자 성장 기록/코테

[백준] 18258번 큐2 Python

으노방 2022. 9. 4. 19:50

내풀이

def push(data):
    queue_list.append(data)
    
def pop():
    if len(queue_list) == 0:
        return -1
    else:
        data = queue_list[0]
        del queue_list[0]
        return data

def size():
    data = len(queue_list)
    return data
    
def empty():
    if len(queue_list) == 0:
        return 1
    else:
        return 0
    
def front():
    if len(queue_list) == 0:
        return -1
    else:
        data = queue_list[0]
        return data

def back():
    if len(queue_list) == 0:
        return -1
    else:
        data = queue_list[-1]
        return data
    
if __name__ == '__main__':
    n  = int(input())
    queue_list = list()
    result = list()

    for _ in range(n):
        txt = input()
        if 'push' in txt:
            t, n = txt.split()
            n = int(n)
            push(n)
        
        elif txt == 'pop':
            p = pop()
            result.append(p)
        
        elif txt == 'size':
            s = size()
            result.append(s)
        
        elif txt == 'front':
            if len(stack_list) == 0:
                result.append(-1)
            else:
                t = front()
                result.append(t)
        
        elif txt == 'empty':
            e = empty()
            result.append(e)
        
        elif txt == 'back':
            b = back()
            result.append(b)
        
    for r in result:
        print(r)

결과

런타임 에러남^^

메모리를 너무 많이 잡아 먹어서 그런다. 생각해 보니까 파이썬에서 Queue 지원하고 있단 걸 깜빡하고 있었다...

 

정답 풀이
import sys
from collections import deque

queue = deque()
N = int(sys.stdin.readline())

for _ in range(N) :
    i = sys.stdin.readline().split()

    if i[0] == 'push' :
        queue.append(int(i[1]))
    
    elif i[0] == 'pop' :
        if not queue :
            print (-1)
        else :
            print(queue[0])
            queue.popleft()
    
    elif i[0] == 'size' :
        print(len(queue))
    
    elif i[0] == 'empty' :
        if len(queue) == 0 :
            print(1)
        else :
            print(0)
    
    elif i[0] == 'front' :
        if not queue:
            print(-1)
        else :
            print(queue[0])
    
    elif i[0] == 'back' :
        if not queue :
            print(-1)
        else :
            print(queue[-1])