Coding Planet
์๊ฐ๋ณต์ก๋(Time Complexity)์ ๊ณต๊ฐ๋ณต์ก๋(Space Complexity) ๋ณธ๋ฌธ
๐ ์ฝ๋ฉํ
์คํธ/์๊ณ ๋ฆฌ์ฆ
์๊ฐ๋ณต์ก๋(Time Complexity)์ ๊ณต๊ฐ๋ณต์ก๋(Space Complexity)
jhj.sharon 2023. 8. 21. 15:40๋ฐ์ํ
| ์๊ฐ๋ณต์ก๋(Time Complexity)๋?
- ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ๋ํ๋ด๋ ์ฒ๋์ด๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ๋ ํน์ฑ์ ๋ฐ๋ผ ๋ค๋ฅผ ์ ์๊ธฐ ๋๋ฌธ์, ์๊ฐ ๋ณต์ก๋๋ ์ผ๋ฐ์ ์ผ๋ก ์ต์ ์ ๊ฒฝ์ฐ, ํ๊ท ๊ฒฝ์ฐ, ์ต์ ์ ๊ฒฝ์ฐ๋ก ๋๋์ด ํ๊ฐ๋๋ค.
๋น -์ค ํ๊ธฐ๋ฒ(Big O Notation)
: ์๊ฐ ๋ณต์ก๋๋ฅผ ํํํ๋๋ฐ ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํ๊ธฐ๋ฒ์ด๋ค. ๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๋ ๋ถ๋ฌธ๋ง์ ๊ณ ๋ คํ์ฌ ๋ํ๋ธ๋ค. ์๋ฅผ ๋ค์ด, ๋์ ์ ๋์ ธ ๋ท๋ฉด์ด ๋์ฌ ํ๋ฅ ์ ์ด์ผ๊ธฐํ ๋ ์ด์ด ์ข์ผ๋ฉด 1๋ฒ์ ๋ท๋ฉด์ด ๋์ค์ง๋ง ์ด์ด ์์ข์ ๊ฒฝ์ฐ n๋ฒ ๋งํผ ๋์ ์ ๋์ ์ผ ํ๋ค. ์ด๋ฐ ํ๋ฅ ์์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ์์ ๋น ์ค ํ๊ธฐ๋ฒ์ด๋ผ ํ๋ค.

์์ฃผ ์ฌ์ฉ๋๋ ์๊ฐ ๋ณต์ก๋์ ์
- O(1): ์์ ์๊ฐ. ์ ๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ์ ์๊ด์์ด ์ผ์ ํ ์๊ฐ์ด ์์๋๋ค.
- O(log n) : ๋ก๊ทธ ์๊ฐ. ์ด์ง ๊ฒ์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ํ๋๋ค.
- O(n) : ์ ํ ์๊ฐ. ๋จ์ ๊ฒ์๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋์จ๋ค.
- O(n log n): ๋ณํฉ ์ ๋ ฌ ๋๋ ํต ์ ๋ ฌ๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋์จ๋ค.
- O(nยฒ) : ๋คํญ ์๊ฐ. ๋ฒ๋ธ ์ ๋ ฌ, ์ฝ์ ์ ๋ ฌ, ์ ํ ์ ๋ ฌ ๋ฑ์์ ๋ํ๋๋ค.
- O(2โฟ) : ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ ๊ณต๊ฐ ๋ณต์ก๋๊ฐ ์ ๋ ฅ ํฌ๊ธฐ์ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ค. ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฉฐ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์์ ๊ฒฝ์ฐ์๋ง ์ค์ ๋ก ์คํ์ด ๊ฐ๋ฅํ๋ค. ex)ํผ๋ณด๋์น ์์ด์ ์ฌ๊ท์ ๊ตฌํ, ์ด์ค for๋ฌธ
[faster] O(1) < O(log n) < O(nlog n) < O(nยฒ) < O(2โฟ) [slower] |
| ๊ณต๊ฐ๋ณต์ก๋(Space Complexity)๋?
- ๊ณต๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์์ ๋ํ๋ด๋ ์ฒ๋์ด๋ค.
- ์๊ฐ ๋ณต์ก๋์ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ณต๊ฐ ๋ณต์ก๋๋ ๋น ์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํด ํํํ๋ค.
๊ณต๊ฐ ๋ณต์ก๋์ ๊ตฌ์ฑ
- ๊ณ ์ ๊ณต๊ฐ(Fixed Space): ์๊ณ ๋ฆฌ์ฆ์ ์คํ์ ํ์ํ ๊ณ ์ ๋ ํฌ๊ธฐ์ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ๋ณ์, ์์, ๊ฐ๋จํ ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฑ์ด๋ค.
- ๊ฐ๋ณ ๊ณต๊ฐ(Variable Space) : ์๊ณ ๋ฆฌ์ฆ ์คํ์ ๋ฐ๋ผ ํฌ๊ธฐ๊ฐ ๋ณํ๋ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์๋ฅผ ๋ค๋ฉด ์ฌ๊ท ์คํ, ๋์ ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ ๋ฑ์ด๋ค.
| ์ ๋ฆฌ
- ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ ์ข ์ข trade-off ๊ด๊ณ์ ์๋ค. ์ฆ, ์๊ฐ์ ์ ์ฝํ๊ธฐ ์ดํด ๋ ๋ง์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ฑฐ๋, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฝํ๊ธฐ์ํด ๋ ๋ง์ ์๊ฐ์ ์๋นํ๋ ๊ฒ์ด๋ค. ์ด๋ฌํ trade-off๋ฅผ ํน์ ๋ฌธ์ ๋ ์ํฉ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์ ํํด์ผํ๋ค.
๋ฐ์ํ
'๐ ์ฝ๋ฉํ ์คํธ > ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ฌ๊ทํจ์ ์๊ณ ๋ฆฌ์ฆ - ํฉํ ๋ฆฌ์ผ ํจ์ ์์ (0) | 2023.08.26 |
---|---|
๋ฒ๋ธ์ ๋ ฌ - ์๋ฐ๋ก ๊ตฌํํ๊ธฐ (0) | 2023.08.21 |
12. ์ํธ - replace, Inteager.parseInt(์ง์ ๋ณ๊ฒฝํ๊ธฐ) (0) | 2023.07.07 |
9. ์ซ์๋ง ์ถ์ถ - Character.isDigit(), ASCII Code ์ฌ์ฉํ๊ธฐ (0) | 2023.05.08 |
8. ์ ํจํ ํฐ๋ฆฐ๋๋กฌ (Palindrome) - replaceAll (0) | 2023.05.08 |
Comments