본문 바로가기
Algorithm

[자료구조/큐] 백준 10845 큐 - 파이썬(Python)

by jangThang 2023. 7. 17.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    10845번: 큐

    첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

    www.acmicpc.net

     

     

    2. 문제 풀이

    push X: 정수 X를 큐에 넣는 연산
    pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력 (비어있으면 -1 출력)
    size: 큐에 들어있는 정수의 개수를 출력
    empty: 큐가 비어있으면 1, 아니면 0을 출력
    front: 큐의 가장 앞에 있는 정수를 출력 (비어있으면 -1 출력)
    back: 큐의 가장 뒤에 있는 정수를 출력 (비어있으면 -1 출력)

     큐를 구현하는 문제입니다.

     

    2022.02.10 - [Algorithm] - [Algorithm] 큐(Queue), 선입선출 줄서기 자료구조

     

    [Algorithm] 큐(Queue), 선입선출 줄서기 자료구조

    [ Contents ] 1. 큐(Queue) 큐(Queue): 선입선출(First-in-First-out), 가장 먼저 들어간 자료부터 꺼내는 자료구조 큐는 '줄 서는 것'과 비슷합니다. 먼저 들어가서 기다린 자료부터 차례차례 꺼냅니다. 앞에서

    star7sss.tistory.com

     (큐에 대한 설명은 위 링크를 참고해주십시오.)

     

     

    3. 코드

    from collections import deque
    import sys
    input = sys.stdin.readline
    
    
    N = int(input())
    stack = deque([])
    for _ in range(N):
        command = input().rstrip()
        
        #push
        if command[:4] == 'push':
            stack.append(int(command[5:]))
        
        #pop
        elif command == 'pop':
            print(-1 if len(stack)==0 else stack.popleft())
        
        #size
        elif command == 'size':
            print(len(stack))
    
        #empty
        elif command == 'empty':
            print(1 if len(stack)==0 else 0)
        
        #front
        elif command == 'front':
            print(-1 if len(stack)==0 else stack[0])
                
        #back
        elif command == 'back':
            print(-1 if len(stack)==0 else stack[-1])
            
        #print(command)
        #print(stack)

     큐에 대한 개념만 있으면 쉬운 문제입니다.

     파이썬에서는 큐를 구현할 때, deque 자료구조를 사용합니다. dequq에서 popleft를 지원하며, 큐 구조는 차후 BFS 탐색에서도 자주 쓰이게 됩니다.

     

    star가 되고나서 Tistory

    반응형

    댓글