๐Ÿ”ฌ Explore/ํŒŒ์ด์ฌ

[ํŒŒ์ด์ฌ] ์ž๋ฃŒ ๊ตฌ์กฐ - deque

devCloud 2024. 10. 21. 22:54
728x90

deque ์ด๋ž€?

deque(๋ฑ)๋Š” ํŒŒ์ด์ฌ์˜ collections ๋ชจ๋“ˆ์—์„œ ์ œ๊ณตํ•˜๋Š” ์–‘๋ฐฉํ–ฅ ํ๋กœ, ๋ฆฌ์ŠคํŠธ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์–‘์ชฝ ๋์—์„œ ๋น ๋ฅธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๋ฆฌ์ŠคํŠธ์™€ ๋น„๊ตํ•ด ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ๋” ํšจ์œจ์ ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์–‘์ชฝ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž์ฃผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•˜๋Š” ๊ฒฝ์šฐ deque๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

 

deque ์‚ฌ์šฉ๋ฒ•

๋จผ์ € collections ๋ชจ๋“ˆ์—์„œ deque๋ฅผ importํ•œ๋‹ค.

from collections import deque

 

 

1๏ธโƒฃ 1. deque ์ƒ์„ฑ

dq = deque([1, 2, 3, 4, 5]) 
print(dq)

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ

deque([1, 2, 3, 4, 5])

 

 

2๏ธโƒฃ 2. ์š”์†Œ ์ถ”๊ฐ€

  • ์˜ค๋ฅธ์ชฝ ๋์— ์š”์†Œ ์ถ”๊ฐ€: append()
  • ์™ผ์ชฝ ๋์— ์š”์†Œ ์ถ”๊ฐ€: appendleft()
dq.append(6)         # ์˜ค๋ฅธ์ชฝ์— 6 ์ถ”๊ฐ€
dq.appendleft(0)     # ์™ผ์ชฝ์— 0 ์ถ”๊ฐ€
print(dq)

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ

deque([0, 1, 2, 3, 4, 5, 6])

 

 

3๏ธโƒฃ 3. ์š”์†Œ ์ œ๊ฑฐ

  • ์˜ค๋ฅธ์ชฝ ๋ ์š”์†Œ ์ œ๊ฑฐ: pop()
  • ์™ผ์ชฝ ๋ ์š”์†Œ ์ œ๊ฑฐ: popleft()
dq.pop()             # ์˜ค๋ฅธ์ชฝ ๋ ์š”์†Œ ์ œ๊ฑฐ (6)
dq.popleft()         # ์™ผ์ชฝ ๋ ์š”์†Œ ์ œ๊ฑฐ (0)
print(dq)

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ

deque([1, 2, 3, 4, 5])

 

 

4๏ธโƒฃ 4. deque์˜ ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ

  • ํ™•์žฅ: ์—ฌ๋Ÿฌ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ extend()์™€ extendleft()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ํšŒ์ „: rotate(n)์„ ์‚ฌ์šฉํ•ด n๋งŒํผ ์š”์†Œ๋ฅผ ํšŒ์ „ํ•  ์ˆ˜ ์žˆ๋‹ค.
dq.extend([6, 7])       # ์˜ค๋ฅธ์ชฝ ๋์— [6, 7] ์ถ”๊ฐ€
dq.extendleft([-1, -2]) # ์™ผ์ชฝ ๋์— [-1, -2] ์ถ”๊ฐ€
print(dq)               # ์ถœ๋ ฅ: deque([-2, -1, 1, 2, 3, 4, 5, 6, 7])

dq.rotate(2)            # ์˜ค๋ฅธ์ชฝ์œผ๋กœ 2์นธ ํšŒ์ „
print(dq)               # ์ถœ๋ ฅ: deque([6, 7, -2, -1, 1, 2, 3, 4, 5])

 

 

5๏ธโƒฃ 5. ์ตœ๋Œ€ ๊ธธ์ด ์ง€์ •

deque๋Š” ์ตœ๋Œ€ ๊ธธ์ด๋ฅผ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์„ค์ •๋œ ๊ธธ์ด๋ฅผ ์ดˆ๊ณผํ•  ๊ฒฝ์šฐ ์ž๋™์œผ๋กœ ์˜ค๋ž˜๋œ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.

dq = deque([1, 2, 3, 4, 5], maxlen=5)
dq.append(6)          # 6์„ ์ถ”๊ฐ€ํ•˜๋ฉด ์™ผ์ชฝ ๋์˜ 1์ด ์ œ๊ฑฐ๋จ
print(dq)

 

์ถœ๋ ฅ ๊ฒฐ๊ณผ

deque([2, 3, 4, 5, 6])

 

 

์š”์•ฝ

  • deque๋Š” ์–‘์ชฝ ๋์—์„œ์˜ ๋น ๋ฅธ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ์™€ ์Šคํƒ์˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์ œ๊ณตํ•œ๋‹ค.
  • append(), appendleft(), pop(), popleft() ๋“ฑ์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ถ”๊ฐ€ ๋ฐ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • rotate() ๋ฉ”์„œ๋“œ๋กœ ํšŒ์ „ํ•  ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, maxlen์„ ์„ค์ •ํ•ด ๊ณ ์ •๋œ ํฌ๊ธฐ์˜ ๋ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.
  • deque๋Š” ํ, ์Šคํƒ, ์Šฌ๋ผ์ด๋”ฉ ์œˆ๋„์šฐ ๋“ฑ์˜ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.
728x90