๐ก ๋ณธ ๊ธ์ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ ๋์๋ฅผ ์ฐธ๊ณ ํ์ฌ ์ ๋ฆฌํ์์ต๋๋ค.
intro - ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ
์๋ฃ๊ตฌ์กฐ
์ฌ์ ์ ์๋ฏธ์ ์๋ฃ๊ตฌ์กฐ๋ ๋๋์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ๊ทผ · ๊ด๋ฆฌํ ์ ์๋ ๋ฐ์ดํฐ์ ๊ตฌ์กฐ๋ฅผ ๋ปํ๋ค.
์ฝ๊ฒ ๋งํด, ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ทธ๋ฆ(Data Container) ์ด๋ผ๊ณ ํ ์ ์๋ค.
๋๋ถ๋ถ์ ์๋ฃ๊ตฌ์กฐ๋ ํน์ ์ํฉ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ์ ํนํ๋์ด ์๋ค. ๋ฐ๋ผ์, ๋ง์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์๋๋ฉด ๋ฌธ์ ๋ฅผ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
์๊ณ ๋ฆฌ์ฆ
์๊ณ ๋ฆฌ์ฆ์ด๋ ์ด๋ค ๋ฌธ์ ๋ฅผ ํ๊ฑฐ๋ ๊ณ์ฐํ๊ธฐ ์ํ ์ผ๋ จ์ ์ ํํ ์ ์ฐจ์ด๋ค.
๐ ์
๋ ฅํ ๊ฐ์ด ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅ๋๊ณ , ์๋ฃ๊ตฌ์กฐ์ ์ ์ฅ๋ ๊ฐ์
์ฐ์ฐ์ ์ ์ฉํ์ฌ ์ํ๋ ์ถ๋ ฅ์ ๊ณ์ฐํ๋ ์ ์ฐจ๊ฐ ์๊ณ ๋ฆฌ์ฆ์ด๋ค.
5.1 ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ถ์ํ ๋ ๋ณต์ก๋๋ฅผ ์ฌ์ฉํ๋ค.
๋ณต์ก๋๋ ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ก ๋๋๋ค. ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ํจ์จ์ฑ์,
๊ณต๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๊ฐ(๋ฉ๋ชจ๋ฆฌ) ํจ์จ์ฑ์ ์๋ฏธํ๋ค.
์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ๋ฅผ ๋ํ๋ธ ๊ฒ์ด๋ค.
๋น ์ค Big-O
์ ์
๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์ต์
์ ์คํ์๊ฐ์ ํ๊ธฐํ๋ค.
์ต์
์ผ ๊ฒฝ์ฐ๋ฅผ ํ๋จํ๋ฉด ํ๊ท ๊ณผ ๊ฐ๊น์ด ์ฑ๋ฅ์ผ๋ก ์์ธกํ๊ธฐ ์ฝ๋ค.
๊ณ์ฐ ๋ฐฉ๋ฒ
์ต๊ณ ์ฐจํญ๋ง์ ํ๊ธฐํ๋ค. ์์ํญ, ๊ณ์, ์ํฅ๋ ฅ ์๋ ํญ์ ๋ฌด์ํ๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ์คํ์๊ฐ ๋ณด๋ค๋ ๋ฐ์ดํฐ๋ ์ฌ์ฉ์ ์ฆ๊ฐ์จ์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ ์์ธกํ๋ ๊ฒ์ด ๋ชฉํ์ด๊ธฐ ๋๋ฌธ
- ์
๋ ฅ ๊ฐ์ด ์ถฉ๋ถํ ํฌ๋ค๊ณ ๊ฐ์ ํ์ ๋, ์ฆ๊ฐ ์๋ ์ธก๋ฉด์์ ๋๋จธ์ง ํญ์ด ์ฐจ์งํ๋ ๋น์ค์ด ์๋์ ์ผ๋ก ๋ฏธ๋ฏธํ๋ค. ๋ฐ๋ผ์ ํฌ๊ฒ ์๋ฏธ๊ฐ ์์
์ฆ, Big-O๋ ๋ถํ์ํ ์ฐ์ฐ์ ์ ๊ฑฐํ์ฌ ์๊ณ ๋ฆฌ์ฆ ๋ถ์์ ์ฝ๊ฒํ๋ ๊ฒ์ด ๋ชฉ์ ์ด๋ค.
1) ์์ํญ ๋ฌด์
O(N+5) -> O(N)
2) ๊ณ์ ๋ฌด์
O(3N) -> O(N)
3) ์ํฅ๋ ฅ ์๋ ํญ ๋ฌด์
O(2N^2+N+5) -> O(N^2)
์ข ๋ฅ
ํ๊ธฐ๋ฒ | ์ค๋ช | ์ |
---|---|---|
O(1) | ์ ๋ ฅ ๋ฐ์ดํฐ ํฌ๊ธฐ์ ์๊ด ์์ด ์คํ์๊ฐ์ด ์ธ์ ๋ ์ผ์ ํ ์๊ณ ๋ฆฌ์ฆ | ์คํ์์ push, pop |
O(logn) | ์ฐ์ฐ์ด ํ ๋ฒ ์คํ๋ ๋ ๋ง๋ค ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์ ๋ฐ ๊ฐ์ํ๋ ์๊ณ ๋ฆฌ์ฆ | ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ, tree ํํ ์๋ฃ๊ตฌ์กฐ ํ์ |
O(n) | ์ ๋ ฅ๊ฐ์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์คํ์๊ฐ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์๊ณ ๋ฆฌ์ฆ | for๋ฌธ |
O(nlogn) | ๋๋ถ๋ถ์ ํจ์จ ์ข์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์ด์ ํด๋นํ๋ค. | ํต ์ ๋ ฌ, ๋ณํฉ์ ๋ ฌ, ํ ์ ๋ ฌ |
O(n^2) | ์ ๋ ฅ ๋ฐ์ดํฐ๋ฅผ n๋งํผ ๋ฐ๋ณตํ๋๋ฐ, ๊ทธ ์์์ ๋ n๋งํผ ๋ฐ๋ณตํ๋ ์๊ณ ๋ฆฌ์ฆ | ์ด์ค for๋ฌธ, ์ฝ์ ์ ๋ ฌ, ๊ฑฐํ์ ๋ ฌ, ์ ํ์ ๋ ฌ |
O(2^n) | ์ฃผ๋ก ์ฌ๊ท์ ์ผ๋ก ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ด์ ํด๋นํ๋ค. | ํผ๋ณด๋์น ์ |
Faster O(1) < O(log n) < O(n) < O(nlogn) < O(n^2) < O(2^n) < O(n!) Slower
๊ณต๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋ ๋ ์ฌ์ฉํ๋ **๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์**์ ์๋ฏธํ๋ค.
์ด ํ์ ๊ณต๊ฐ = ๊ณ ์ ๊ณต๊ฐ + ๊ฐ๋ณ ๊ณต๊ฐ
- ๊ณ ์ ๊ณต๊ฐ : ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋ฌด๊ดํ ๊ณต๊ฐ (์ ๋ ฅ๊ณผ ์ถ๋ ฅ์ ํ์๋ ํฌ๊ธฐ์ ๊ด๊ณ ์๋ ๊ณต๊ฐ)
- ์ฝ๋ ์ ์ฅ ๊ณต๊ฐ, ๋จ์ ๋ณ์, ๊ณ ์ ํฌ๊ธฐ์ ๊ตฌ์กฐ ๋ณ์, ์์
- ๊ฐ๋ณ ๊ณต๊ฐ: ์๊ณ ๋ฆฌ์ฆ ์คํ๊ณผ ๊ด๋ จ ์๋ ๊ณต๊ฐ - ์คํ ์ค ๋์ ์ผ๋ก ํ์ํ ๊ณต๊ฐ
- ๊ณ ์ ๊ณต๊ฐ์ ์์์ด๋ฏ๋ก ๊ณต๊ฐ ๋ณต์ก๋๋ ๊ฐ๋ณ ๊ณต๊ฐ์ ๋ฐ๋ผ ์ข์ฐ๋๋ค.
์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋์ ๊ด๊ณ
๋๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ์์ ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ ํธ๋ ์ด๋์คํ(=๋ฐ๋น๋ก) ๊ด๊ณ์ด๋ค.
- ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ -> ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง (ex. ๋ณํฉ์ ๋ ฌ)
- ๋๋ฆฐ ์๊ณ ๋ฆฌ์ฆ -> ์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฐจ์ง (ex. ๋ฒ๋ธ์ ๋ ฌ)
Reference
https://codermun-log.tistory.com/235
https://noahlogs.tistory.com/27
https://ssdragon.tistory.com/100
https://deep-learning-study.tistory.com/434
https://madplay.github.io/post/time-complexity-space-complexity
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] ์ ํ ์๋ฃ๊ตฌ์กฐ (0) | 2023.11.11 |
---|