โ๏ธ Coding Test Preparation/Algorithm & Other Concepts
[Algorithm & Other Concepts] ๋ณต์ก๋์ ๋น ์ค(Big-O) ํ๊ธฐ๋ฒ
A Lim Han
2023. 6. 28. 21:58
๐ฆ ๋ณต์ก๋
๋ณต์ก๋ | |
์๊ฐ ๋ณต์ก๋ | ๊ณต๊ฐ ๋ณต์ก๋ |
์๊ณ ๋ฆฌ์ฆ ์ํ์ ํ์ํ ์ฐ์ฐ ํ์ | ์๊ณ ๋ฆฌ์ฆ ์ํ์ ํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ |
- ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์ข์ ์๊ณ ๋ฆฌ์ฆ
- ์๊ฐ ๋ณต์ก๋์ ๊ณต๊ฐ ๋ณต์ก๋๋ ๊ฑฐ๋ ๊ด๊ณ ( = Trade-off )
- Memoization ( = ๋ฉ๋ชจ์ด์ ์ด์ )
: ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์์ ๋๋ฆผ์ผ๋ก์จ ์๊ณ ๋ฆฌ์ฆ ์ํ ์๊ฐ์ ๋ํญ ์ค์ด๋ ๋ฐฉ๋ฒ
๐ฆ ์๊ฐ ๋ณต์ก๋๊ณผ ๋น ์ค(Big-O) ํ๊ธฐ๋ฒ
๋น ์ค(Big-O) ํ๊ธฐ๋ฒ | |
ํจ์์ ์ํ์ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ |
- ์๊ฐ ๋ณต์ก๋ == O(N)
- N = ์ฒ๋ฆฌํ ๋ฐ์ดํฐ ๊ฐ์ = ์ฐ์ฐ ํ์
- ์ฌ๊ธฐ์ '์ฐ์ฐ'์ด๋ ์ธ์ด์์ ์ง์ํ๋ ๋น๊ต, ์ฌ์น ์ฐ์ฐ์ ๋ชจ๋ ํฌํจํ ๊ฐ๋
ex)
x = 1
y = 2
print(x + y)
--> ํด๋น ์์์์์ ์๊ฐ ๋ณต์ก๋๋ O(1)
- ๋น ์ค ํ๊ธฐ๋ฒ์ ๋ฐ๋ฅธ ๋ช ์นญ ์ ๋ฆฌ
๋น ์ค ํ๊ธฐ๋ฒ | ๋ช ์นญ |
O(1) | ์์ ์๊ฐ |
O(logN) | ๋ก๊ทธ ์๊ฐ |
O(N) | ์ ํ ์๊ฐ |
O(NlogN) | ๋ก๊ทธ ์ ํ ์๊ฐ |
O(N^2) | ์ด์ฐจ ์๊ฐ |
O(N^3) | ์ผ์ฐจ ์๊ฐ |
O(2^n) | ์ง์ ์๊ฐ |
๐ฆ ์๊ฐ ๋ฐ ๋ฉ๋ชจ๋ฆฌ ์ธก์
import time
# ์ธก์ ์์
start_time = time.time()
# ์๊ณ ๋ฆฌ์ฆ ์ฝ๋
# ์ธก์ ์ข
๋ฃ
end_time = time.time()
# ์ธก์ ํ ์๊ฐ ํ์ธ
print("์์ ์๊ฐ: ", end_time - start_time)