MingyuPark

[백준 18258] 큐2 본문

Algorithm

[백준 18258] 큐2

MingyuPark 2022. 8. 17. 14:29

문제

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

 

18258번: 큐 2

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

www.acmicpc.net


아이디어

 

단순 구현이다. deque를 통해 큐를 구현하고, 조건에 맞춰서 명령을 처리하도록 하면 된다. 

난이도는 높지 않고, 주어진 조건을 정확하게 구현하는 게 중요하다.

 

한 가지 주의할 점은 여러 줄에 걸쳐서 입력을 받기 때문에 input()을 통해서 입력을 받게 되면 시간 초과가 발생할 수 있다. 이런 경우 입력의 개수 T는 input을 통해 받아도 상관이 없지만 반복문에서 입력을 받을 때는 sys.stdin.readline()을 통해서 받아야 한다. 


Solution

import sys 
from collections import deque 
q = deque([])

T = int(input())
for _ in range(T) : 
    cmd = list(map(str, sys.stdin.readline().split()))
    
    if cmd[0] == 'push' :
        q.append(cmd[1])
    elif cmd[0] == 'pop' : 
        if len(q) > 0 : 
            popped = q.popleft()
            print(popped)
        else : 
            print(-1)

    elif cmd[0] == 'size' : 
        print(len(q))

    elif cmd[0] == 'empty' : 
        if len(q) > 0 : 
            print(0)
        else : 
            print(1)

    elif cmd[0] == 'front' : 
        if len(q) == 0 : 
            print(-1)
        else : 
            print(q[0])

    elif cmd[0] == 'back' : 
        if len(q) == 0 : 
            print(-1) 
        else : 
            print(q[-1])

'Algorithm' 카테고리의 다른 글

[백준 10942] 팰린드롬?  (1) 2022.09.14
[백준 2839] 설탕 배달  (0) 2022.09.13
[백준 9461] 파도반 수열  (0) 2022.09.12
[백준 11726] 2×n 타일링  (0) 2022.09.12
[백준 1010] 다리 놓기  (0) 2022.08.17
Comments