728x90
> Python, 구현, 자료 구조, 덱
📖 문제 : 덱 (Python)
정수를 저장하는 덱(Deque)를 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여덟 가지이다.
- push_front X: 정수 X를 덱의 앞에 넣는다.
- push_back X: 정수 X를 덱의 뒤에 넣는다.
- pop_front: 덱의 가장 앞에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- pop_back: 덱의 가장 뒤에 있는 수를 빼고, 그 수를 출력한다. 만약, 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- size: 덱에 들어있는 정수의 개수를 출력한다.
- empty: 덱이 비어있으면 1을, 아니면 0을 출력한다.
- front: 덱의 가장 앞에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
- back: 덱의 가장 뒤에 있는 정수를 출력한다. 만약 덱에 들어있는 정수가 없는 경우에는 -1을 출력한다.
입력
첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 않은 명령이 주어지는 경우는 없다.
출력
출력해야하는 명령이 주어질 때마다, 한 줄에 하나씩 출력한다.
예제 입력 1
15
push_back 1
push_front 2
front
back
size
empty
pop_front
pop_back
pop_front
size
empty
pop_back
push_front 3
empty
front
예제 출력 1
2
1
2
0
2
1
-1
0
1
-1
0
3
내 코드
from collections import deque
import sys
input = sys.stdin.readline
if __name__ == "__main__":
n = int(input())
D = []
D = deque(D)
answer = []
for _ in range(n):
temp = input()
if "push_front" in temp:
temp, x = map(str, temp.split())
D.appendleft(int(x))
elif "push_back" in temp:
temp, x = map(str, temp.split())
D.append(int(x))
elif "pop_front" in temp:
if len(D) == 0:
answer.append(-1)
else:
answer.append(D.popleft())
elif "pop_back" in temp:
if len(D) == 0:
answer.append(-1)
else:
answer.append(D.pop())
elif "size" in temp:
answer.append(len(D))
elif "empty" in temp:
if len(D) == 0:
answer.append(1)
else:
answer.append(0)
elif "front" in temp:
if len(D) == 0:
answer.append(-1)
else:
answer.append(list(D)[0])
else:
if len(D) == 0:
answer.append(-1)
else:
answer.append(list(D)[-1])
print(*answer, sep = '\n')
# for i in range(len(answer)):
# print(answer[i])
Point ! ⭐️
- 빠르게 입력 받을 땐 !
import sys
input = sys.stdin.readline
사용하기 - 리스트에 있는 원소를 하나씩 줄바꿈하며 출력하고자 할 때
for i in range(len(answer)):
print(answer[i])
아래와 같은 한 줄로 작성 가능
print(*answer, sep = '\n')
백준
https://www.acmicpc.net/problem/10866
728x90
'Algorithm (Python, Java, SQL) > BaekJoon' 카테고리의 다른 글
[백준 19941번] 햄버거 분배 (Python) (0) | 2023.06.21 |
---|---|
[백준 2828번] 사과 담기 게임 (Python) (0) | 2023.06.21 |
[백준 1158번] 요세푸스 문제 (Python) (0) | 2023.06.20 |
[백준 10773번] 제로 (Python) (0) | 2023.06.20 |
[백준 1343번] 폴리오미노 (Python) (함수 replace로 특정 문자열 바꾸기) (0) | 2023.06.20 |