[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])
'๐ ์ฝ๋ฉํ ์คํธ > ์ ๋ฌธ์๋ฅผ ์ํ ์ฝ๋ฉํ ์คํธ ํต์ฌ - Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 4๋ฒ) ์์ด์ ํ์ (0) | 2024.05.21 |
---|---|
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 3๋ฒ) ์ฐ์๋ '1'์ ๊ธธ์ด (0) | 2024.05.18 |
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 2๋ฒ) ํฉ๊ฒฉ์ (0) | 2024.05.16 |
[Python ์ฝํ ์ ๋ฌธ] 2. (๋ฌธ์ 1๋ฒ) ์ต์๊ฐ์ ์์น (0) | 2024.05.15 |
[Python ์ฝํ ์ ๋ฌธ] 1. ์๊ฐ๋ณต์ก๋ (0) | 2024.05.12 |
๋ธ๋ก๊ทธ์ ์ ๋ณด
Claire's Study Note
Hi.Claire