https://www.acmicpc.net/problem/10845
10845번: 큐
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
풀이 과정
스택은 파이썬에서 list로 구현할 수 있었지만 Queue는 list로 구현해서는 안된다. 0번째 원소를 insert, pop 하는 연산의 시간복잡도가 O(N)이기 때문에 절대 list로 큐를 구현해서는 안된다. collection 모듈에서 양 방향 큐인 deque를 사용해 큐를 구현해야 한다.
큐의 왼쪽으로 수가 들어와 오른쪽으로 나가게 구현하였고, push시 appendleft(), pop시 pop()을 사용하였다.
코드
import sys
from collections import deque
N = int(input())
queue = deque()
for i in range(N):
instruction = sys.stdin.readline().split()
if instruction[0] == 'push': queue.appendleft(instruction[1])
elif instruction[0] == 'pop': print(queue.pop() if queue else -1)
elif instruction[0] == 'size': print(len(queue))
elif instruction[0] == 'empty': print(0 if queue else 1)
elif instruction[0] == 'front': print(queue[-1] if queue else -1)
elif instruction[0] == 'back': print(queue[0] if queue else -1)
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 9093 - 단어 뒤집기 [파이썬] (0) | 2022.03.23 |
---|---|
백준 1158 - 요세푸스 문제 [파이썬] (0) | 2022.03.23 |
백준 1874 - 스택 수열 [파이썬] (0) | 2022.03.19 |
백준 9012 - 괄호 [파이썬] (0) | 2022.03.18 |
백준 10828 - 스택 [파이썬] (0) | 2022.03.18 |