C ๋ฐฐ์ด vs. ํ์ด์ฌ ๋ฐฐ์ด(๋ฆฌ์คํธ)
C ์ ๋ฐฐ์ด์์๋ ์ค์ ๊ฐ๋ค์ด ๋ฉ๋ชจ๋ฆฌ์ ๋ค์ด์ค์ง๋ง, ํ์ด์ฌ์ ๋ฐฐ์ด(๋ฆฌ์คํธ)์์๋ ์ค์ ๊ฐ์ด ๋ค์ด์ค๋ ๊ฒ ์๋๋ผ ์ค์ ๊ฐ์ ๋ ํผ๋ฐ์ค(์ฃผ์) ๊ฐ์ด ๋ค์ด์จ๋ค. ๋ฐ๋ผ์ ํ ๋ฐฐ์ด์ ์ฌ๋ฌ ๊ฐ์ง ํ์
์ ๋ฃ์ ์๋ ์๊ณ , ์ค์ ๊ฐ์ ํฌ๊ธฐ๋ ์ค์ํ์ง ์๋ค. ๋ํ ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์์ ์ผ๋ก ์กด์ฌํ์ง ์์ ์๋ ์๋ค.
C ๋ฐฐ์ด
ํ์ด์ฌ ๋ฐฐ์ด
C๋ฐฐ์ด๊ณผ ํ์ด์ฌ๋ฐฐ์ด์ ์์ธํ ์์๋ณด๊ธฐ : http://www.laurentluce.com/posts/python-list-implementation/
๋ฐฐ์ด ์ ๊ทผ vs. ํ์
๋ฐฐ์ด์ ์ ๊ทผ
์ธ๋ฑ์ค๋ฅผ ์ง์ ์ง์ ํด์ ์ ๊ทผ (O(1))
๋ฐฐ์ด์ ํ์
์ฐพ๊ณ ์ํ๋ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ฅด๋ ์ํ์์ ๋ฐฐ์ด์์ ์ํ๋ ๊ฐ ํ์ (O(n))
๋ฐฐ์ด ์ฐ์ฐ ์๊ฐ ๋ณต์ก๋
์ถ๊ฐ ์ฐ์ฐ(append operation)
ํ์ด์ฌ์ ๋ฐฐ์ด์ ๋ด๋ถ์ ์ผ๋ก C์ธ์ด์ ์ ์ ๋ฐฐ์ด์ ์ฌ์ฉํ๋ค.
๊ทธ๋ฌ๋ค๊ฐ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๊ฐ ๋ ์ปค์ ธ์ผํ๋ค๋ฉด, ๋ ๋ฐฐ๋ก ํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์์ฝํด์ ์ฌ์ฉํ๋ค.
๋ฐฐ์ด์ ์ถ๊ฐ์ฐ์ฐ์ ๋ ๊ฐ์ง ์ผ์ด์ค๊ฐ ์๋ค.
case1. ๋ฐฐ์ด์ ๊ณต๊ฐ์ด ๋จ์์์ ๋
๊ทธ๋ฅ ๋น์ด์๋ ๋ฐฐ์ด ๊ณต๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ์ ๊ทผํ๋ฉด ๋๋ ๊ฒ์ด๋ฏ๋ก O(1) ์ด๋ค.
case2. ๋ฐฐ์ด์ ๊ณต๊ฐ์ด ์์ ๋(=๊ฝ ์ฐผ์ ๋)
๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ธฐ ์ํด์ ํ์ฌ ์ฌ์ฉ ์ค์ธ ๋ฐฐ์ด๋ณด๋ค ๋ ๋ฐฐ ํฐ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐฐ์ด๋ก ์ฎ๊ฒจ์ผ ํ๋ค.
๊ธฐ์กด ๋ฐฐ์ด์์ ์๋ก์ด ๋ฐฐ์ด(๋ฉ๋ชจ๋ฆฌ 2๋ฐฐ)๋ก ๊ฐ์ ์น ๋ค ๋ณต์ฌํ๋ ์์
์ด ํ์ํ๋ค.
๋ฐ๋ผ์ n๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐฐ์ด์ ๋ณต์ฌํ๋ ์์
O(n) + ์๋ก์ด ๋ฐ์ดํฐ ํ๋ ์ถ๊ฐ O(1)
๊ฒฐ๊ณผ์ ์ผ๋ก O(n) ์ด๋ค.
๋ถํ ์ํ ๋ถ์
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ ์, ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ๊ฐ์ ํ๊ธด ํ์ง๋ง ์ต์
์ ๊ฒฝ์ฐ๊ฐ ๋์ฌ ํ๋ฅ ์ด ๋งค์ฐ ์ ์ ์์๋ ์ด๋ ๋ถํฉ๋ฆฌํ ์๋ ์๋ค. ์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ถํ ์ํ ๋ถ์ ์ด๋ผ๋ ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ๋ฒ์ด ์๋ค.
๋ถํ ์ํ ๋ถ์์ ์ฝ๊ฒ ๋งํด์ ์๊ฐ๋ณต์ก๋์ ํ๊ท ์น๋ฅผ ๊ตฌํ๋ ๋ถ์ ๋ฐฉ๋ฒ์ด๋ค.
n๋ฒ ์ํํ ๋ ๊ฑธ๋ฆฌ๋ ์๊ฐ ๋ณต์ก๋ / n
์ฝ์ ์ฐ์ฐ(insert operation)
์ถ๊ฐ ์ฐ์ฐ(append) ๋ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ์ถ๊ฐ๋ฅผ ํ๋ ์ฐ์ฐ์ด๊ณ , ์ฝ์
(insert) ๋ ๋ฐฐ์ด์ ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ์ฐ์ฐ์ด๋ค.
case1. ๋ฐฐ์ด์ ๊ณต๊ฐ์ด ๋จ์์์ ๋
์ต์
์ ๊ฒฝ์ฐ๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒฝ์ฐ์ด๋ค.
n๊ฐ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ค์ ํ ์นธ์ฉ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ค๋ก ๋ฐ๊ธฐ : O(n)
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ฝ์
: O(1)
๊ฒฐ๋ก : O(n+1) => O(n)
case2. ๋ฐฐ์ด์ ๊ณต๊ฐ์ด ์์ ๋(=๊ฝ ์ฐผ์ ๋)
์๋ก์ด ๋ฐฐ์ด์ ๊ฐ์ ๋ณต์ฌ : O(n)
ํ ์นธ์ฉ ๋ค๋ก ๋ฐ๊ธฐ : O(n)
์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์ฝ์
: O(1)
๊ฒฐ๋ก : O(2n+1) => O(n)
์ญ์ ์ฐ์ฐ(delete operation)
๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํ๋ ค๋ฉด, ์ญ์ ํ๊ณ ์ถ์ ์ธ๋ฑ์ค๋ณด๋ค ๋ค์ ์๋ ๋ฐ์ดํฐ๋ค์ ์์ชฝ์ผ๋ก ํ ์นธ์ฉ ๋น๊ธฐ๋ฉด ๋๋ค.
case1. ๋งจ ์ ๋ฐ์ดํฐ๋ฅผ ์ง์ธ ๋ (์ต์ ์ ๊ฒฝ์ฐ)
(n-1)๊ฐ์ ๊ธฐ์กด ๋ฐ์ดํฐ๋ค์ ํ ์นธ์ฉ ์์ผ๋ก ๋น๊ธฐ๊ธฐ : O(n-1)
๊ฒฐ๋ก : O(n-1) => O(n)
case2. ๋งจ ๋ค ๋ฐ์ดํฐ๋ฅผ ์ง์ธ ๋ (์ต์์ ๊ฒฝ์ฐ)
๋ฐ์ดํฐ์ ์ด๋์์ด ๊ทธ๋ฅ ๋ฐฐ์ด์ ์ฌ์ฉ ๊ณต๊ฐ์ ํ ์ธ๋ฑ์ค ์ค์ด๋ฉด ๋๋ค.
del ํค์๋๋ฅผ ์ฐ๋ฉด ํ์ด์ฌ ๋ด๋ถ์ ์ผ๋ก ์์์ ๋ฐ์ดํฐ๋ฅผ ์ง์ฐ๊ณ , ๋ฐฐ์ด ์ธ๋ฑ์ค๋ ์ค์ฌ์ค๋ค. (C ์ ์ ๋ฐฐ์ด๊ณผ์ ์ฐจ์ด์ )
๊ฒฐ๋ก : O(1)