๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐‘†๐‘ข๐‘›๐‘ โ„Ž๐‘–๐‘›๐‘’ ๐‘Ž๐‘“๐‘ก๐‘’๐‘Ÿ ๐‘Ÿ๐‘Ž๐‘–๐‘›โœง

[Python] ๋ฐํฌ(deque) ๋ณธ๋ฌธ

Deque

  • ํ(queue)๋Š” ์„ ์ž…์„ ์ถœ(FIFO) ๋ฐฉ์‹
  • ๋ฐํฌ(deque) = ์–‘๋ฐฉํ–ฅ ํ
  • ์•ž, ๋’ค ์–‘์ชฝ ๋ฐฉํ–ฅ์—์„œ ์—˜๋ฆฌ๋จผํŠธ(element)๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฐํฌ(deque)๋Š” ์Šคํƒ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๊ณ , ํ ์ฒ˜๋Ÿผ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ตœ์ ํ™”๋œ ์—ฐ์‚ฐ ์†๋„๋ฅผ ์ œ๊ณตํ•œ๋‹ค.
  • ๋ฐํฌ๋Š” ํŠนํžˆ push/pop ์—ฐ์‚ฐ์ด ๋นˆ๋ฒˆํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ๋ฆฌ์ŠคํŠธ๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

 

๋ฐํฌ(deque) ๋ฉ”์„œ๋“œ(method)

  • deque.append(item): item์„ ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ ๋์— ์‚ฝ์ž…ํ•œ๋‹ค.
  • deque.appendleft(item): item์„ ๋ฐํฌ์˜ ์™ผ์ชฝ ๋์— ์‚ฝ์ž…ํ•œ๋‹ค.
  • deque.pop(): ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ ๋ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— ๋ฐํฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
  • deque.popleft(): ๋ฐํฌ์˜ ์™ผ์ชฝ ๋ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋™์‹œ์— ๋ฐํฌ์—์„œ ์‚ญ์ œํ•œ๋‹ค.
  • deque.extend(array): ์ฃผ์–ด์ง„ ๋ฐฐ์—ด(array)์„ ์ˆœํ™˜ํ•˜๋ฉด์„œ ๋ฐํฌ์˜ ์˜ค๋ฅธ์ชฝ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • deque.extendleft(array): ์ฃผ์–ด์ง„ ๋ฐฐ์—ด(array)์„ ์ˆœํ™˜ํ•˜๋ฉด์„œ ๋ฐํฌ์˜ ์™ผ์ชฝ์— ์ถ”๊ฐ€ํ•œ๋‹ค.
  • deque.remove(item): item์„ ๋ฐํฌ์—์„œ ์ฐพ์•„ ์‚ญ์ œํ•œ๋‹ค.
  • deque.rotate(num): ๋ฐํฌ๋ฅผ num๋งŒํผ ํšŒ์ „ํ•œ๋‹ค.(์–‘์ˆ˜๋ฉด ์˜ค๋ฅธ์ชฝ, ์Œ์ˆ˜๋ฉด ์™ผ์ชฝ)

 

from collections import deque

deq = deque()

# Add element to the start
deq.appendleft(10)

# Add element to the end
deq.append(0)

# Pop element from the start
deq.popleft()

# Pop element from the end
deq.pop()