반응형
문제
정수를 저장하는 덱을 구현한 다음, 입력으로 주어지는 명령을 처리하는 프로그램을 작성하시오.
명령은 총 여덟 가지이다.
- 1 X: 정수 X를 덱의 앞에 넣는다. (1 ≤ X ≤ 100,000)
- 2 X: 정수 X를 덱의 뒤에 넣는다. (1 ≤ X ≤ 100,000)
- 3: 덱에 정수가 있다면 맨 앞의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
- 4: 덱에 정수가 있다면 맨 뒤의 정수를 빼고 출력한다. 없다면 -1을 대신 출력한다.
- 5: 덱에 들어있는 정수의 개수를 출력한다.
- 6: 덱이 비어있으면 1, 아니면 0을 출력한다.
- 7: 덱에 정수가 있다면 맨 앞의 정수를 출력한다. 없다면 -1을 대신 출력한다.
- 8: 덱에 정수가 있다면 맨 뒤의 정수를 출력한다. 없다면 -1을 대신 출력한다.
입력
첫째 줄에 명령의 수 N이 주어진다. (1 ≤ N ≤ 1,000,000)
둘째 줄부터 N개 줄에 명령이 하나씩 주어진다.
출력을 요구하는 명령은 하나 이상 주어진다.
출력
출력을 요구하는 명령이 주어질 때마다 명령의 결과를 한 줄에 하나씩 출력한다.
예제 입력11
6 1 3 1 8 7 8 3 2 5 1 2 5 4 4 |
예제 출력1
8 3 8 3 5 3 |
풀이
덱은 양방향으로 입출력이 가능한 형태의 자료구조이다.
주어진 조건에 따라 방향에 신경쓰며 코드를 작성하도록 하자.
import sys, collections
input = sys.stdin.readline
deque = collections.deque()
for _ in range(int(input())):
a = list(map(int,input().split()))
if a[0] == 1:
deque.append(a[1])
elif a[0] == 2:
deque.appendleft(a[1])
elif a[0] == 3:
print(deque.pop() if deque else -1)
elif a[0] == 4:
print(deque.popleft() if deque else -1)
elif a[0] == 5:
print(len(deque))
elif a[0] == 6:
print(0 if deque else 1)
elif a[0] == 7:
print(deque[-1] if deque else -1)
else:
print(deque[0] if deque else -1)
반응형
'알고리즘 연습 > 큐, 덱' 카테고리의 다른 글
[🥈3 / 백준 24511 / 파이썬] queuestack (0) | 2023.08.24 |
---|---|
[🥈4 / 백준 15828 / 파이썬] Router (0) | 2022.10.31 |
[🥈3 / 백준 2346 / 파이썬] 풍선 터뜨리기 (0) | 2022.04.10 |
[🥉1 / 백준 2161 / 파이썬] 카드1 (0) | 2022.01.05 |
[프로그래머스 / 파이썬] 캐시 (2018 KAKAO BLIND RECRUITMENT) (0) | 2021.09.04 |