
https://www.acmicpc.net/problem/10866
10866번: 덱
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지
www.acmicpc.net
알고리즘에 대한 설명은 문제 자체에 있기 때문에 굳이 구현 방법을 설명하지 않아도 될 거 같다.
다만 구현에 있어서 걸림돌이 되었던 몇가지 주의점만 짚고 넘어가고자 한다. 우선, sys.stdin.readline()이 일반적으로 사용하는 input()보다 버퍼에서 저장하고 처리하는 속도가 빠르기에 반복문에서 입력을 할 경우 사용하는 것이 더 좋다. 이때, 또 주의할 점은 stdin은 GoogleColab에서 지원하지 않는다는 것!! 때문에 정답을 확인하고자 하면 input()을 사용하다가 나중에 백준에 제출할때만 입력부분을 바꾸거나 아예 다른 python 컴파일 프로그램을 사용하자
문제 풀이
import sys
stack = []
N = int(input())
for _ in range(N):
cmd = sys.stdin.readline().split()
if cmd[0] == 'push_front':
stack.insert(0,cmd[1])
elif cmd[0] == 'push_back':
stack.append(cmd[1])
elif cmd[0] == 'pop_front':
if len(stack) == 0:
print(-1)
else:
print(stack.pop(0))
elif cmd[0] == 'pop_back':
if len(stack) == 0:
print(-1)
else:
print(stack.pop())
elif cmd[0] == 'size':
print(len(stack))
elif cmd[0] == 'empty':
if len(stack) == 0:
print(1)
else:
print(0)
elif cmd[0] == 'front':
if len(stack) == 0:
print(-1)
else:
print(stack[0])
elif cmd[0] == 'back':
if len(stack) == 0:
print(-1)
else:
print(stack[-1])
'알고리즘_파이썬' 카테고리의 다른 글
| 백준 1260 DFS와 BFS (0) | 2024.01.19 |
|---|---|
| 백준 10816 숫자카드 2 (0) | 2024.01.19 |
| 백준 9012 괄호 VPS (0) | 2024.01.13 |
| 백준 1181 단어정렬 (1) | 2024.01.13 |
| 백준 1110 더하기 사이클 (0) | 2024.01.13 |