Claire's Study Note

[Python ์ฝ”ํ…Œ ์ž…๋ฌธ] 2. ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, deque

by Hi.Claire
๋ฐ˜์‘ํ˜•

๐Ÿ–ฅ๏ธ ์ž…๋ฌธ์ž๋ฅผ ์œ„ํ•œ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ํ•ต์‹ฌ - Python (๊น€ํƒœ์›, ์ธํ”„๋Ÿฐ)

 

์„น์…˜2. ๋ฐฐ์—ด, ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ, deque

2-1. ๋ฐฐ์—ด(Array)

(1) ๋ฐฐ์—ด์˜ ๊ฐœ๋…

๋ฐฐ์—ด(Array)์€ ๊ฐ™์€ ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์ง‘ํ•ฉ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†๊ณต๊ฐ„์— ๊ฐ’์ด ์ฑ„์›Œ์ ธ์žˆ๋Š” ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋Š” 4byte์ด๋‹ค.

์ •์ˆ˜ํ˜• ๋ณ€์ˆ˜๋กœ ์ด๋ฃจ์–ด์ง„ ๋ฐฐ์—ด์˜ ์ฒซ ๋ฒˆ์งธ ๋ฒˆ์ง€(array[0])์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ 100์ผ ๋•Œ, ๊ฐ ๋ฒˆ์ง€์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ฐจ๋ก€๋Œ€๋กœ 4byte์”ฉ ์ปค์ง„๋‹ค.

(๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๊ฐ€ 0, 1, 2, 3,...์ผ ๋•Œ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ฐจ๋ก€๋Œ€๋กœ 100, 104, 108, 112,...๊ฐ€ ๋œ๋‹ค.)

 

(2) ๋ฐฐ์—ด์˜ ์žฅ๋‹จ์ 

  • ์žฅ์  

1. ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์›์†Œ์— ๋ฐ”๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.

(์˜ˆ) ์œ„์˜ ๋ฐฐ์—ด์—์„œ 9๋ฅผ ์ฐพ๊ณ ์ž ํ•œ๋‹ค. ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•ด ๊ฐ’์— ๋ฐ”๋กœ ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

array[0]์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ 100์ด๋ฏ€๋กœ array[3]์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” 100 + (3*4) = 112๋‹ค.

๋ฐฐ์—ด ๊ฒ€์ƒ‰ ์‹œ ์—ฐ์‚ฐ๋Ÿ‰์€ T(n) = ๋ฐฐ์—ด์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ + (์ธ๋ฑ์Šค * ์ž๋ฃŒํ˜• ํฌ๊ธฐ) ์ด๋‹ค.

๋ฐฐ์—ด ๊ฒ€์ƒ‰ ์‹œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1) ์ด๋‹ค.

 

  • ๋‹จ์ 

1. ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ์ด ๋น„ํšจ์œจ์ ์ด๋‹ค. ์ดˆ๊ธฐ ์‚ฌ์ด์ฆˆ๋งŒํผ ๋ฉ”๋ชจ๋ฆฌ์˜ ์—ฐ์†๊ณต๊ฐ„์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ž‘์€ ๋นˆ ๊ณต๊ฐ„์€ ๋ฒ„๋ ค์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

2. ๊ฐ’์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ์—์„œ ๋น„ํšจ์œจ์ ์ด๋‹ค. ๋ฐ์ดํ„ฐ์˜ ์ค‘๊ฐ„ ์ง€์ ์—์„œ ์ž๋ฃŒ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์ผ์–ด๋‚  ๊ฒฝ์šฐ ๋‹ค์Œ ํ•ญ๋ชฉ์˜ ๋ชจ๋“  ๊ฐ’์„ ์ด๋™์‹œ์ผœ์•ผ๋งŒ ํ•œ๋‹ค.

(์˜ˆ) ๋ฐฐ์—ด์˜ ๊ฐ’๋“ค์€ ๋ฉ”๋ชจ๋ฆฌ ์ƒ์— ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜๋ฏ€๋กœ ์ค‘๊ฐ„์— ์ž๋ฃŒ๊ฐ€ ์‚ฝ์ž…, ์‚ญ์ œ๋  ๊ฒฝ์šฐ ๊ทธ ์ดํ›„์˜ ๋ชจ๋“  ๊ฐ’์„ ์ด๋™์‹œ์ผœ์•ผ ํ•œ๋‹ค.

์ž…๋ ฅํฌ๊ธฐ๊ฐ€ n์ผ ๋•Œ ์ตœ์•…์˜ ๊ฒฝ์šฐ n๋ฒˆ ์—ฐ์‚ฐ์ด ์ผ์–ด๋‚˜์•ผ ํ•œ๋‹ค.

๋ฐฐ์—ด์˜ ๊ฐ’์„ ์‚ฝ์ž… ๋˜๋Š” ์‚ญ์ œํ•  ๋•Œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n) ์ด๋‹ค.

 

2-2. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List)

(1) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ฐœ๋…

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List)๋Š” ๊ฐ’๊ณผ ์ฃผ์†Œ๋ฅผ ๋ฌถ์€ ๋…ธ๋“œ๋ฅผ ์ฃผ์†Œ๋กœ ์—ฐ๊ฒฐํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋…ธ๋“œ๋ฅผ head๋ผ๊ณ  ํ•œ๋‹ค.

head๋ฅผ ์ œ์™ธํ•œ ๊ฐ ๋…ธ๋“œ๋Š” ๊ฐ’๊ณผ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.

 

(2) ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ 

1. ์ฃผ์†Œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์–ด ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ์—ฐ์‚ฐ์˜ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.

(์˜ˆ) ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ์— 7์ด๋ผ๋Š” ๊ฐ’์„ ๊ฐ€์ง„ ๋…ธ๋“œ๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ 330์—์„œ 320์œผ๋กœ ๋ฐ”๊พธ๊ณ , ์ƒˆ๋กœ ์‚ฝ์ž…ํ•˜๋Š” ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ 330์œผ๋กœ ์ง€์ •ํ•ด์ค€๋‹ค.

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์— ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๋Š” ๊ฒฝ์šฐ

 

(์˜ˆ) ์„ธ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.

๋‘ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ฃผ์†Œ๋ฅผ 330์—์„œ 400์œผ๋กœ ๋ฐ”๊พผ๋‹ค.

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๊ฐ’์„ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1) ์ด๋‹ค. 

 

2. ๋ฉ”๋ชจ๋ฆฌ ํ™œ์šฉ์ด ํšจ์œจ์ ์ด๋‹ค. ์„ ์–ธํ•  ๋•Œ ํฌ๊ธฐ๋ฅผ ๋ณ„๋„๋กœ ์ง€์ •ํ•˜์ง€ ์•Š๊ณ  ์ฃผ์†Œ๋กœ ๊ณ„์† ์—ฐ๊ฒฐํ•ด๋‚˜๊ฐ„๋‹ค. ์—ฐ์†๋œ ๊ณต๊ฐ„์ด ํ•„์š”ํ•˜์ง€ ์•Š์•„ ๋นˆ ๊ณต๊ฐ„์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

  • ๋‹จ์ 

1. ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๋‹ค. ๋ฆฌ์ŠคํŠธ ์›์†Œ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋ฉฐ, Head ์ฃผ์†Œ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ์ˆœ์ฐจ์ ‘๊ทผ์„ ํ•ด์•ผ ํ•œ๋‹ค.

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๊ฒ€์ƒ‰ ์‹œ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n) ์ด๋‹ค.

 

2-3. deque(๋ฑ) ์ž๋ฃŒ๊ตฌ์กฐ

Python์—์„œ ๋ฐฐ์—ด์€ list ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋Š” deque ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

(1) deque์˜ ๊ฐœ๋…

deque์€ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์™ผ์ชฝ ๋ถ€๋ถ„๊ณผ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„ ์ฆ‰ ์–‘์ชฝ ๋ชจ๋‘์—์„œ ์ž๋ฃŒ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋‹ค.

๋”ฐ๋ผ์„œ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์™ผ์ชฝ(์•ž์ชฝ)์— ๊ฐ’์„ ๋„ฃ๊ฑฐ๋‚˜ ๋นผ์•ผํ•˜๋ฉด deque๋ฅผ ์จ์•ผ ์„ฑ๋Šฅ์ด ์ข‹๋‹ค. (์‹œ๊ฐ„๋ณต์žก๋„ O(1))

list๋ฅผ ์“ธ ๊ฒฝ์šฐ ์™ผ์ชฝ์— ๊ฐ’์„ ๋„ฃ๊ฑฐ๋‚˜ ๋นผ๋ฉด ๊ทธ ๋‹ค์Œ ๋ชจ๋“  ๊ฐ’์„ ์ด๋™์‹œ์ผœ์•ผ ํ•˜๋ฏ€๋กœ ์„ฑ๋Šฅ์ด ์ข‹์ง€ ์•Š๋‹ค. (์‹œ๊ฐ„๋ณต์žก๋„ O(n))

 

(2) deque์˜ ๋‚ด์žฅํ•จ์ˆ˜

1. append() : deque์˜ ์˜ค๋ฅธ์ชฝ ๋ถ€๋ถ„์— ์ž๋ฃŒ ์ถ”๊ฐ€

from collections import deque
dq = deque()
dq.append(1)
dq.append(2)
dq.append(3)
print(dq)

deque([1, 2, 3])

 

2. appendleft() : deque์˜ ์™ผ์ชฝ ๋ถ€๋ถ„์— ์ž๋ฃŒ ์ถ”๊ฐ€

from collections import deque
dq = deque()
dq.appendleft(1)
dq.appendleft(2)
dq.appendleft(3)
print(dq)

deque([3, 2, 1])

 

3. popleft() : deque์˜ ๋งจ ์™ผ์ชฝ ์ž๋ฃŒ ์ œ๊ฑฐ

from collections import deque
dq = deque()
dq.append(1)
dq.append(2)
dq.append(3)
dq.popleft()
print(dq)

deque([2, 3])

 

4. pop() : deque์˜ ๋งจ ์˜ค๋ฅธ์ชฝ ์ž๋ฃŒ ์ œ๊ฑฐ

from collections import deque
dq = deque()
dq.append(1)
dq.append(2)
dq.append(3)
dq.pop()
print(dq)

deque([1, 2])

 

 

๋ฐ˜์‘ํ˜•

๋ธ”๋กœ๊ทธ์˜ ์ •๋ณด

Claire's Study Note

Hi.Claire

ํ™œ๋™ํ•˜๊ธฐ