[Python] 백준 알고리즘 10866번 - 덱
2022. 3. 21. 22:06ㆍ알고리즘/문제풀이
[Python] 백준 알고리즘 10866번 - 덱
문제 출처 : https://www.acmicpc.net/problem/10866
접근 방식
자료구조를 활용하여 푸는 문제이다. 파이썬에서는 'deque'라는 자료구조를 라이브러리로 지원을 한다.
해당 자료구조에서 지원하는 메서드를 활용해서 문제를 풀면 된다. 문제의 예제를 보면 명령문이 주어져있고, 그러한 명령문 중에 'push'의 계열의 명령문만 뒤에 띄어쓰기 다음에 숫자가 같이 입력이 된다.
따라서 코드를 작성할 때 명령문을 입력받는 부분에서 명령문 부분만 따로 if문으로 판별을 하고 그 뒤에 각각에 맞춰서 코드의 명령을 작성해주면 된다.
deque의 경우 기존의 queue 자료구조와 다르게 앞 뒤로 자료의 입출력을 받을 수 있다. 그러므로 push, pop의 경우 front / back 구분을 잘해서 방향에 맞는 메서드를 입력해줘야 한다.
구현 코드
import sys
from collections import deque
num = int(sys.stdin.readline())
q = deque()
for _ in range(num):
s = sys.stdin.readline().split()
if s[0] == 'push_front' :
q.appendleft(s[1])
elif s[0] == 'push_back' :
q.append(s[1])
elif s[0] == 'pop_front' :
if q : print(q.popleft())
else : print(-1)
elif s[0] == 'pop_back' :
if q : print(q.pop())
else : print(-1)
elif s[0] == 'size':
print(len(q))
elif s[0] == 'empty':
if q : print(0)
else : print(1)
elif s[0] == 'front':
if q : print(q[0])
else : print(-1)
elif s[0] == 'back':
if q : print(q[len(q)-1])
else : print(-1)
보충할 점
- 덱, 큐, 스택 등의 자료구조 활용에 대한 연습
'알고리즘 > 문제풀이' 카테고리의 다른 글
ASCII Table - 아스키 코드표 (0) | 2022.04.11 |
---|---|
[Python] 백준 알고리즘 4963번 - 섬의 개수 (0) | 2022.03.23 |
[Python] 백준 알고리즘 7576번 - 토마토 (0) | 2022.03.07 |
[Python] 백준 알고리즘 1926번 - 그림 (0) | 2022.03.06 |
[Python] 백준 알고리즘 11404번 - 플로이드 (0) | 2022.03.04 |