https://www.acmicpc.net/problem/10845
💻 코드
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
queue_list = deque([])
for _ in range(n):
command = input()
if 'push' in command:
num = command[5:]
queue_list.append(num)
if 'pop' in command:
if queue_list:
print(queue_list.popleft(), end='')
else:
print(-1)
if 'size' in command:
print(len(queue_list))
if 'empty' in command:
if queue_list:
print(0)
else:
print(1)
if 'front' in command:
if queue_list:
print(queue_list[0], end='')
else:
print(-1)
if 'back' in command:
if queue_list:
print(queue_list[-1], end='')
else:
print(-1)
📝 풀이
큐 (queue)
FIFO(First In First Out) 구조, 선입 선출
먼저 입력을 받는 시간을 줄이기 위해 sys.stdin.readline()을 input 대신 사용하였다. 그리고 queue_list를 만든 다음 입력을 받은 명령어에 따라 push, pop, empty 함수가 실행되도록 만들었다. 스택과 거의 같은데 데이터를 꺼내는 위치가 다르므로 pop 명령어 함수가 달라지게 된다. pop 명령어 함수를 작성할 때 리스트 관련 함수인 pop() 함수를 쓰면 안 된다. 그냥 pop() 함수는 리스트의 마지막 요소를 돌려주고 그 요소는 삭제하는 함수로 스택에 해당하기 때문이다. 리스트의 첫 번째 요소, 즉 가장 먼저 넣은 요소를 돌려주고 그 요소를 삭제하는 함수를 사용하려면 deque()를 사용해야 한다. 사용 방법은 다음과 같다.
1. collections 모듈의 deque를 import 하기
from collections import deque
deque는 double-ended queue의 약자로 데이터를 양방향에서 추가하고 제거할 수 있는 자료 구조이다.
2. 리스트 생성할 때 deque 함수 씌워주기
queue_list = deque([])
3. deque가 제공하는 popleft() 함수 사용하기
popleft(): 리스트의 첫 번째 요소를 돌려주고 그 요소를 삭제
print(queue_list.popleft(), end='')
'Algorithm 문제 풀이 > python' 카테고리의 다른 글
[python] 백준 9095번 1, 2, 3 더하기 (0) | 2022.07.20 |
---|---|
[python] 백준 9613번 GCD 합 (0) | 2022.07.19 |
[python] 백준 11727번 2 X n 타일링 2 (0) | 2022.07.15 |
[python] 백준 1406번 에디터 문제 풀이 (0) | 2022.07.13 |
[python] 백준 11726번 2 X n 타일링 문제 풀이 (0) | 2022.07.12 |