728x90

문제 84. (2021-07-23) 

 

 

 

18258번: 큐 2

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

www.acmicpc.net

Baekjoon(18258). 큐 2

정수를 저장하는 큐를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.

명령은 총 여섯 가지이다.

- push X: 정수 X를 큐에 넣는 연산이다.

- pop: 큐에서 가장 앞에 있는 정수를 빼고, 그 수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

- size: 큐에 들어있는 정수의 개수를 출력한다.

- empty: 큐가 비어있으면 1, 아니면 0을 출력한다.

- front: 큐의 가장 앞에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

- back: 큐의 가장 뒤에 있는 정수를 출력한다. 만약 큐에 들어있는 정수가 없는 경우에는 -1을 출력한다.

 

입력

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

 

출력

출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.

 

❧ 입출력 예

15
push 1
push 2
front
back
size
empty
pop
pop
pop
size
empty
pop
push 3
empty
front
1
2
2
0
1
2
-1
0
1
-1
0
3

❧ 정답

from collections import deque
import sys

queue = deque()
x = int(sys.stdin.readline().rstrip())
for _ in range(x):
    y = sys.stdin.readline().rstrip()
    if y == 'pop':
        if queue: print(queue.popleft())
        else: print(-1)
    elif y == 'size':
        print(len(queue))
    elif y == 'empty':
        if queue: print(0)
        else: print(1)
    elif y == 'front':
        if queue: print(queue[0])
        else: print(-1)
    elif y == 'back':
        if queue: print(queue[-1])
        else: print(-1)
    else:
        queue.append(int(y[5:]))

1️⃣ 이전 queue 문제와의 차이점 : 시간복잡도 O(n)으로 해결해야함

2️⃣ deque 자료구조를 이용하여 queue 구현

3️⃣ 입력을 input()이 아닌 sys.stdin.readline()을 이용하여 시간 복잡도 줄임

sys.stdin.readline()이 연산 속도도 적게 걸리고 메모리 소모도 훨씬 적음!

 

💡 sys.stdin.readline()

: 한 줄에 대한 입력을 str 형태로 받아오는 sys 모듈 내의 함수

- 맨 뒤에 개행문자를 포함해서 하나의 문자열로 받아오므로, 개행문자를 제거하고 받아오고 싶다면 rstrip()을 이용하면 된다!

 

 

 

sys — System-specific parameters and functions — Python 3.10.2 documentation

sys — System-specific parameters and functions This module provides access to some variables used or maintained by the interpreter and to functions that interact strongly with the interpreter. It is always available. sys.abiflags On POSIX systems where P

docs.python.org

 

readline — GNU readline interface — Python 3.10.2 documentation

readline — GNU readline interface The readline module defines a number of functions to facilitate completion and reading/writing of history files from the Python interpreter. This module can be used directly, or via the rlcompleter module, which supports

docs.python.org

 

728x90