๐ŸŽ‰ berenickt ๋ธ”๋กœ๊ทธ์— ์˜จ ๊ฑธ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๐ŸŽ‰
CS
๋ฐฑ์ค€-codeplus
๊ธฐ์ดˆ1
200-03-๋ฑ

๋ฑ(Deque)

  • ์–‘ ๋์—์„œ๋งŒ ์ž๋ฃŒ๋ฅผ ๋„ฃ๊ณ  ์–‘ ๋์—์„œ ๋บ„ ์ˆ˜ ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • Double-ended queue์˜ ์•ฝ์ž์ด๋‹ค.
  • push_front : ๋ฑ์˜ ์•ž์— ์ž๋ฃŒ๋ฅผ ๋„ฃ๋Š” ์—ฐ์‚ฐ
  • push_back : ๋ฑ์˜ ๋’ค์— ์ž๋ฃŒ๋ฅผ ๋„ฃ๋Š” ์—ฐ์‚ฐ
  • pop_front : ๋ฑ์˜ ์•ž์—์„œ ์ž๋ฃŒ๋ฅผ ๋นผ๋Š” ์—ฐ์‚ฐ
  • pop_back : ๋ฑ์˜ ๋‘์—์„œ ์ž๋ฃŒ๋ฅผ ๋นผ๋Š” ์—ฐ์‚ฐ
  • front : ๋ฑ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ณด๋Š” ์—ฐ์‚ฐ
  • back : ๋ฑ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ž๋ฃŒ๋ฅผ ๋ณด๋Š” ์—ฐ์‚ฐ

1. ๋ฑ - 10866

python

1
# ๋ฑ์˜ ์•ž๊ณผ ๋’ค์—์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๊ณ , ๋ฑ์˜ ๊ธธ์ด๋‚˜ ๋น„์–ด์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰
2
import sys
3
from collections import deque
4
5
input = sys.stdin.readline # ์ž…๋ ฅ์„ ๋น ๋ฅด๊ฒŒ ๋ฐ›๊ธฐ ์œ„ํ•ด sys.stdin.readline์„ ์‚ฌ์šฉ
6
n = int(input()) # ๋ช…๋ น์–ด์˜ ๊ฐœ์ˆ˜ n์„ ์ž…๋ ฅ๋ฐ›์Šต๋‹ˆ๋‹ค.
7
dequeList = deque() # ๋ฑ์„ ์ƒ์„ฑ
8
9
for _ in range(n):
10
line = input().split() # ์ž…๋ ฅ์„ ๊ณต๋ฐฑ์œผ๋กœ ๋‚˜๋ˆ„์–ด ๋ช…๋ น์–ด์™€ ๊ฐ’(์ˆซ์ž)์„ ๋ถ„๋ฆฌ
11
command = line[0] # ๋ช…๋ น์–ด ๋ถ€๋ถ„์„ ์ถ”์ถœ
12
13
# ๐Ÿ‘‰ (1) push_front X: ์ •์ˆ˜ X๋ฅผ ๋ฑ์˜ ์•ž์— ๋„ฃ๋Š”๋‹ค
14
if command == "push_front":
15
num = int(line[1])
16
dequeList.appendleft(num)
17
# ๐Ÿ‘‰ (2) push_back X: ์ •์ˆ˜ X๋ฅผ ๋ฑ์˜ ๋’ค์— ๋„ฃ๋Š”๋‹ค.
18
elif command == "push_back":
19
num = int(line[1])
20
dequeList.append(num)
21
# ๐Ÿ‘‰ (3) pop_front: ๋ฑ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
22
# ๋งŒ์•ฝ, ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅ
23
elif command == "pop_front":
24
if dequeList:
25
print(dequeList.popleft())
26
else:
27
print(-1)
28
# ๐Ÿ‘‰ (4) pop_back: ๋ฑ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ˆ˜๋ฅผ ๋นผ๊ณ , ๊ทธ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
29
# ๋งŒ์•ฝ, ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅ
30
elif command == "pop_back":
31
if dequeList:
32
print(dequeList.pop())
33
else:
34
print(-1)
35
# ๐Ÿ‘‰ (5) size: ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅ
36
elif command == "size":
37
print(len(dequeList))
38
# ๐Ÿ‘‰ (6) empty: ๋ฑ์ด ๋น„์–ด์žˆ์œผ๋ฉด 1์„, ์•„๋‹ˆ๋ฉด 0์„ ์ถœ๋ ฅ
39
elif command == "empty":
40
print(0 if dequeList else 1)
41
# ๐Ÿ‘‰ (7) front: ๋ฑ์˜ ๊ฐ€์žฅ ์•ž์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅ
42
elif command == "front":
43
if dequeList:
44
print(dequeList[0])
45
else:
46
print(-1)
47
# ๐Ÿ‘‰ (8) back: ๋ฑ์˜ ๊ฐ€์žฅ ๋’ค์— ์žˆ๋Š” ์ •์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ๋ฑ์— ๋“ค์–ด์žˆ๋Š” ์ •์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” -1์„ ์ถœ๋ ฅ
48
elif command == "back":
49
if dequeList:
50
print(dequeList[-1])
51
else:
52
print(-1)