๋ค์ด๊ฐ๋ฉฐ
๊ธฐ์์ด๋ฉด ๊ฐ์ฅ ๋น ๋ฅธ ๊ธธ๋ก ๊ฐ์!
์ถํด๊ทผ์ ํ๊ฑฐ๋, ์น๊ตฌ์์ ์ฝ์ ๋ฑ๋ฑ. ์ด๋๊ฐ๋ฅผ ํฅํ ๋ ์ฐ๋ฆฌ๋ ํญ์ ๋ชฉ์ ์ง๋ก ๊ฐ๋ ๋น ๋ฅธ ๋ฃจํธ๋ฅผ ์ฐพ์๋ณด๋ ๊ฒฝํฅ์ด ์๋ค.
์ปดํจํฐ๋ ๋ง์ฐฌ๊ฐ์ง๋ค. ํ๋ก๊ทธ๋จ์ ์ํํ ๋ ์๊ฐ ๋ณต์ก๋๊ฐ ๊ฐ์ฅ ๋ฎ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ฌ ํจ์จ์ ์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํํ๋ ค ํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์ด๋ค ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๊ณผ์ (๋ช
๋ น์ด)๋ค์ ๋จ๊ณ์ ์ธ ๋์ด์ ๋งํ๋ค.
์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ๋ ํจ์จ์ ์ธ๊ฐ๋ฅผ ํ๊ฐํ๋ ๋ฐ์๋ ์๋์ ๊ฐ์ ์งํ๋ค์ด ์ฌ์ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ ํ๊ฐ ์งํ
- ์ ํ์ฑ
- ์์ ๋
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋
- ์ต์ ์ฑ
- ํจ์จ์ฑ
- ์๊ฐ ๋ณต์ก๋ => ์ํํ์ ๋ ์ผ๋งํผ์ ์๊ฐ์ด ์์๋๋์ง?
- ๊ณต๊ฐ ๋ณต์ก๋ => ์ผ๋งํผ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฌ์ฉ๋๋์ง?
๋ณดํต ์๊ณ ๋ฆฌ์ฆ์์ ์ค์ํ๊ฒ ์ฌ๊ฒจ์ง๋ ๋ถ๋ถ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋๊ณผ ํจ์จ์ฑ, ๊ทธ ์ค์์๋ ์๊ฐ ๋ณต์ก๋์ด๋ค.
์๊ฐ ๋ณต์ก๋๋ ์
๋ ฅ ํฌ๊ธฐ ๊ฐ์ ๋ํด ์๊ณ ๋ฆฌ์ฆ์ ๋จ์ ์ฐ์ฐ์ ๋ช ๋ฒ ์ํํ๋ ์ง์ ๋ํด ๊ณ์ฐํ์ฌ ์ํ ์๊ฐ์ ํ๊ฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.
์๊ฐ ๋ณต์ก๋์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ๋ค์ ๋ค์๊ณผ ๊ฐ๋ค.
์๊ฐ ๋ณต์ก๋์ ์ํฅ์ ๋ฏธ์น๋ ์์ธ
- ์
๋ ฅ ํฌ๊ธฐ (n์ผ๋ก ํ์ํจ)
- ์ ๋ ฅ์ผ๋ก ์ ๊ณต๋๋ ๋ฐ์ดํฐ์ ํฌ๊ธฐ, ๊ฐ์
- ํ๋ ฌ์ ํฌ๊ธฐ๋ ๋ฆฌ์คํธ ์์์ ์ ๊ฐ์ ๊ฒ๋ค.
- ์ ๋ ฅํฌ๊ธฐ n์ ๋ํ ํจ์๋ฅผ f(n)์ผ๋ก ํํํ๊ณ , n์ด ์ฆ๊ฐํ๋ฉด ์ํ ์๊ฐ๋ ์ฆ๊ฐํ๋ค.
- ์
๋ ฅ ๋ฐ์ดํฐ์ ์ํ
- ํ๊ท ์ํ ์๊ฐ
- ์ต์ ์ํ ์๊ฐ
- ์ต์ ์ํ ์๊ฐ ⇒ ์๊ฐ ๋ณต์ก๋๋ก ์ฌ์ฉํจ
์
๋ ฅ ๋ฐ์ดํฐ์ ์ํ์ ๋ํด์ ์ ๊ทผ ์ฑ๋ฅ ํ๊ธฐ๋ฒ์ผ๋ก ์ํ์๊ฐ์ ์ฆ๊ฐ์ถ์ธ๋ฅผ ํ์
ํ ์ ์๋๋ฐ,
์ค์ํ์ง ์์ ์์์ ๊ณ์๋ค์ ์ ์ธํ๊ณ ์๋์ ๊ฐ์ด ์ต๊ณ ์ฐจํญ๋ง์ ๊ณ์ฐํ๋ค.
์ต๊ณ ์ฐจํญ์ด ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ด๋ค.
1 O(1)
3n+5 O(n)
2n^2+5n+1 O(n^2)
์ ๊ทผ์ ํํ๋ฒ์๋ ์ธ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์์ง๋ง ๋ณดํต์ ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ๋ฐ์ง๋ ๋น
์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ๋ค.
์ต์
์ ๊ฒฝ์ฐ์ผ ๋๋ฅผ ํ๋จํ๋ฉด ํ๊ท ๊ณผ ํก์ฌํ ์ฑ๋ฅ์ผ๋ก ์์ธกํ๊ธฐ ์ข๊ธฐ ๋๋ฌธ์ด๋ค.
3๊ฐ์ง ์ ๊ทผ์ ํํ๋ฒ
- O ๋น ์ค : ์ต์ ์ ์ํฉ์ ๊ณ ๋ คํ์ฌ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ ํํ (๋๋ถ๋ถ์ ์๊ณ ๋ฆฌ์ฆ ํํ)
- ๐ฝ ์ธํ : ํ๊ท ์ ์ธ ๊ฒฝ์ฐ์์์ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ ํํ
- Ω ์ค๋ฉ๊ฐ : ์ต์ ์ ์ํฉ์ผ ๋์ ์ฑ๋ฅ ์ธก์ ๊ฒฐ๊ณผ ํํ
์ฃผ์ O-ํ๊ธฐ ๊ฐ์ ์ฐ์ฐ ์๊ฐ์ ํฌ๊ธฐ ๊ด๊ณ
O(1) < O(log n) < O(n) < O(n log n) <<<<< O(n^2) < O(n^3) < O(2^n)
๋น
์ค์ ๋ณต์ก๋๋ฅผ ๋ํ๋ธ ์ฐจํธ๋ฅผ ์์ผ๋ก ๋์ดํด๋ณด๋ฉด ์ด๋ ๊ฒ ํํํด๋ณผ ์ ์๋ค.
์ผ์ชฝ์ผ๋ก ๊ฐ์๋ก ์๊ฐ์ด ์ ๊ฒ ์์๋๋ฉฐ ์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ์๋ก ์๊ฐ์ด ๋ ๋ง์ด ์์๋๋ค.
์ ์ผ ์ผ์ชฝ์ ์์์๊ฐ O(1)์ด ๊ฐ์ฅ ํจ์จ์ ์ด๋ฉฐ ์ ์ผ ์ค๋ฅธ์ชฝ์ ์ง์ ์๊ฐ O(2^n)์ด ๊ฐ์ฅ ๋นํจ์จ์ ์ด๋ค.
๋น ์ค ํ๊ธฐ๋ฒ ์์
์๋ฐ์คํฌ๋ฆฝํธ๋ก ๋ณด๋ ๋ํ์ ์ธ ๋น ์ค ํ๊ธฐ๋ฒ ์์ ์ฝ๋๋ค.
- O(1)
return ๊ฐ์ ์์์ด๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(1)์ด๋ค.
function big_o(n) {
let sum = 0;
sum = n * 2;
return sum; // 2์ด ๋์ค๊ธฐ ๋๋ฌธ์ O(1)
}
- O(n)
for๋ฌธ์ด ๋ํ์ ์ด๋ค. for๋ฌธ์ ์ค์ฒฉ๋ ์๋ก n ์ ๊ณฑ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
// for๋ฌธ์ด ๋ง์์๋ก n ์ ๊ณฑ์ด ๋๋ค.
function big_o(arr, n) {
let sum = 0;
for (let i = 0; i < n; i++) {
sum += arr[i];
}
return sum; // n+2๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ O(N)
}
- O(n^2)
์ด์ค for๋ฌธ์ด ๋ํ์ ์ธ ์์๋ค. for๋ฌธ์ ๋นํด ํ์ ํ ๋๋ฆฐ ์๊ฐ ๋ณต์ก๋..
function big_o(arr, n) {
let sum = 0;
for (let i = 0; i < n; i++) {
for (let j = 0; j < n; j++) {
sum += arr[i][j];
}
}
return sum; // n^2 + 2 => O(n^2)
}
- O(logN)
์ด์ง ํ์์ด๋ ๋ณํฉ์ ๋ ฌ, ๋ถํ ์ ๋ณต ๋ฑ์์ ๋ง์ด ๋์ค๋ ์๊ฐ ๋ณต์ก๋์ด๋ค.
function big_o(n) {
let sum = 0;
for (let i = 0; i < n; i *= 2) {
sum += 2;
}
return sum; // n/2 + 2 => O(logN). O(n)๋ณด๋ค ๋ ๋น ๋ฅด๋ค.
}
์๋๋ ์ฐธ๊ณ ํ ์ ์๋ ๊ฐ ์๋ฃ๊ตฌ์กฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋, ๊ณต๊ฐ๋ณต์ก๋๋ฅผ ๋น๊ตํ ํ์ด๋ค.
'๐ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค : ๋ฐฐ์ด ํ์ ์ํค๊ธฐ (2) | 2022.12.02 |
---|---|
[JavaScript] ํ๋ก๊ทธ๋๋จธ์ค : ์ต๋น๊ฐ ๊ตฌํ๊ธฐ (2) | 2022.11.15 |
[JS] ์๊ณ ๋ฆฌ์ฆ : ๋๋ฌด ๊ทธ๋ฆฌ๊ธฐ (๋ณ์ฐ๊ธฐ) (0) | 2022.04.18 |
[JS] ์๊ณ ๋ฆฌ์ฆ : ์ผ๊ณฑ ๋์์ด (0) | 2022.04.15 |
[JS] ์๊ณ ๋ฆฌ์ฆ : ๋ ์์ ์ต๋ ํฉ (0) | 2022.04.14 |
Comment