본문 바로가기

Algorithm & Data Structure

백준 - 10845번(큐)

728x90
반응형

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

 

10845번: 큐

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

www.acmicpc.net

 

import sys
from collections import deque

n = int(sys.stdin.readline())

arr = deque([]) #덱 만들어주기

for _ in range(n):
    x = list(sys.stdin.readline().split()) #띄어쓰기를 기준으로 문자열을 원소로 할당
    
    if x[0] == 'push':
        arr.append(int(x[1]))

    elif x[0] == 'pop':
        if len(arr) == 0:
            print(-1)
        else:
            print(arr.popleft())

    elif x[0] == 'size':
        print(len(arr))

    elif x[0] == 'empty':
        if len(arr) == 0:
            print(1)
        else:
            print(0)

    elif x[0] == 'front':
        if len(arr) == 0:
            print(-1)
        else:
            t = arr.popleft()
            print(t)
            arr.appendleft(t)

    elif x[0] == 'back':
        if len(arr) == 0:
            print(-1)
        else:
            t = arr.pop()
            print(t)
            arr.append(t)

해당 명령어가 큐의 어떤 함수에 할당하는지 생각하면 쉽게 구현 가능하다.

stack의 명령어를 구현하는 문제와 매우 유사하다.

arr의 길이가 0일 때와 시간 초과가 나지 않기 위해 sys모듈을 사용한다는 것을 신경 써주면 된다.

728x90
반응형

'Algorithm & Data Structure' 카테고리의 다른 글

백준 - 2606번(DFS,BFS)  (0) 2022.04.09
백준 - 2161번(큐)  (0) 2022.04.01
백준 - 3190번(큐)  (0) 2022.04.01
백준 - 1107번(전체탐색)  (0) 2022.03.31
백준 - 23322번(그리디)  (0) 2022.03.31