written by sohyeon, hyemin ๐ก
์๊ณ ๋ฆฌ์ฆ์ ์คํํ๋๋ฐ ํ์ํ ์์์ ์์ธกํ๋ ๊ฒ
๋ฉ๋ชจ๋ฆฌ, ํต์ ๋์ญ, ํ๋์จ์ด์ ๊ฐ์ ์์์ด ์ธก์ ์ ๊ด์ฌ๋์์ด ๋๊ธฐ๋ ํ์ง๋ง
๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ธก์ ๋์์ ๊ณ์ฐ์๊ฐ์ด๋ค.
๊ธฐ๋ณธ์ฐ์ฐ๊ฐ์ ๋๋ ์คํ๋ ๋จ๊ณ์ ํ์
(์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ์ํ์๊ฐ์ ๊ฐ ๋ช
๋ น๋ฌธ ์ํ์๊ฐ์ ํฉ์ด๋ค.)
์ฃผ์ด์ง ๋ฌธ์ ์ ์
๋ ฅํฌ๊ธฐ๊ฐ ๋ค์ํ๊ธฐ ๋๋ฌธ์
์ต์
, ์ต์
, ํ๊ท
์ ์ธ ๊ฒฝ์ฐ ์ด 3๊ฐ์ case๋ฅผ ๊ฐ์ง ์ ์๋๋ฐ
์ฐ๋ฆฌ๋ ์ต์
์ ๊ฒฝ์ฐ์ ์ฃผ๋ก ๊ด์ฌ์ ๋ ๊ฒ์ด๋ค.
์ต์
์ ๊ฒฝ์ฐ๋ ๋ชจ๋ ์
๋ ฅ์ ๋ํ ์ํ์๊ฐ์ ์ํ์ด ๋๋ฉฐ,
์ด๋ณด๋ค ๋ ๋์ ๊ฒฝ์ฐ๋ ์กด์ฌํ์ง ์๊ณ ์ต์
์ ๊ฒฝ์ฐ๊ฐ ๋น๋ฒํ๊ธฐ๋ ํจ
๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํ์๊ฐ ๊ธฐ์ค
์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋๋ ๋์ ์ํํ๋ ๊ธฐ๋ณธ์ ์ธ ์ฐ์ฐ์ ์๋ฅผ ์
๋ ฅ์ ํฌ๊ธฐ์ ๋ํ ํจ์๋ก ํํ
<์๊ฐ ๋ณต์ก๋์ ์
๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ>
์๊ฐ ๋ณต์ก๋๊ฐ ๋๋ค๋ ๊ฒ์ ์
๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ํ ์๊ฐ์ด ์ฆ๊ฐํ๋ค๋ ์๋ฏธ์ด๋ค.
ํ์ง๋ง ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฎ๋ค๊ณ ํด์ ์ธ์ ๋ ๋ ๋น ๋ฅด๊ฒ ๋์ํ๋ ๊ฒ์ ์๋๋ค.
์
๋ ฅ์ ํฌ๊ธฐ๊ฐ ์์ ๋๋ ์๊ฐ ๋ณต์ก๋๊ฐ ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋น ๋ฅด๊ฒ ๋์ํ ์๋ ์๋ค.
์๊ฐ ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๊ธฐ ์ฝ๊ฒํ๊ธฐ ์ํด ์ฆ๊ฐ์ฐจ์, ์ ๊ทผ์ ํจ์จ์ฑ์ ๊ธฐ์ค์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ํ์๊ฐ์ ๋ํ๋ผ ๊ฒ์ด๋ค.
๋ ๋จ์ํ๊ฒ ์ถ์ํํ์ฌ ์ํ์๊ฐ์ ๋ํ ์ฆ๊ฐ๋น์จ ๋๋ ์ฆ๊ฐ์ฐจ์๋ฅผ ์ด์ฉํ๋ ๊ฒ
์ฐจ์๊ฐ ๊ฐ์ฅ ๋์ ํญ๋ง ๊ณ ๋ คํ๊ณ ์์ ๊ณ์๋ ๋ฌด์ํ๋ค.
์
๋ ฅํฌ๊ธฐ๊ฐ ๊ทนํ์ผ๋ก ์ฆ๊ฐํ ๋ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ํ์๊ฐ์ด ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง์ ๊ด์ฌ์ ๋๊ณ
์ ๊ทผ์ ์ผ๋ก ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ์ฅ ์ข์ ์ ํ์ด ๋๋ ๊ฒ
์ ๊ทผ์ ํ๊ธฐ ๋ฐฉ์์ ๋ฐ๋ผ,
-
์ต์์ ๊ฒฝ์ฐ : ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ (Big-ฮฉ Notation)
-
ํ๊ท ์ ๊ฒฝ์ฐ : ์ธํ ํ๊ธฐ๋ฒ (Big-ฮธ Notation)
-
์ต์ ์ ๊ฒฝ์ฐ : ๋น ์ค ํ๊ธฐ๋ฒ (Big-O Notation)
์ธ๊ฐ์ง ๋ฐฉ์์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋๋ฐ ์ฌ์ฉํ๋ค.
์ด ์ค์์๋ ์ต์
์ ๊ฒฝ์ฐ์ธ ๋น
์ค๋ฅผ ์ฌ์ฉํด ์ต์
์ ๊ฒฝ์ฐ๋ฅผ ํ๋จํ๋ฉด ํ๊ท ๊ณผ ๊ฐ๊น์ด ์ฑ๋ฅ์ผ๋ก ์์ธกํ๊ธฐ ์ฝ๋ค.
๋น
์ค ํ๊ธฐ๋ฒ์ ์ ๊ทผ์ ์ํ์ ๋ํ๋ด๋ ๊ฒ์ด๋ค.
์
๋ ฅ์ ํฌ๊ธฐ๊ฐ ๊ทนํ์ผ๋ก ์ฆ๊ฐํ ๋ ์ต๊ณ ์ฐจํญ์ ์ฐจ์๊ฐ ๊ฐ์ฅ ์ํฅ์ ๋ง์ด ๋ผ์น๊ธฐ ๋๋ฌธ์
๊ฐ์ฅ ๋์ ํญ์ ์ ์ธํ๊ณ ๋ค๋ฅธ ํญ์ ๋ค ์ ๊ฑฐํ๋ ํ๊ธฐ๋ฒ์ด๋ค.
์ฆ, ์๊ฐ๋ณต์ก๋์ ๊ฐ์ฅ ํฐ ์ํฅ์ ๋ฏธ์น๋ ์ฐจํญ์ผ๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ด๋ค.
T(n)=n^2+2n+9 # O(n2)
T(n)=n^4+n^3+n^2+1 # O(n4)
T(n)=5n^3+3n^2+2n+1 # O(n3)
์ต๊ณ ์ฐจํญ์ ์ ์ธํ๊ณ ๋ค ์ ๊ฑฐํ๊ณ ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ๊ณ์ฐ์ด ๋งค์ฐ ๊ฐ๋จํ๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ๋ฐ๋ณต๋ฌธ์ ์ํด ๊ฒฐ์ ๋๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ด ๋ช๋ฒ ์คํ๋๋์ง ๋ณด๋ฉด ๋๋ค.
for(int i=0; i<N; i++){
...
for(int k=0; k<N; k++){
...
}
}
์์ ๊ฐ์ ๊ฒฝ์ฐ N๋ฒ ์ํ๋๋ ๋ฐ๋ณต๋ฌธ์ด ๋๋ฒ ์ค์ฒฉ๋์ด์๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(N^2)
์ด๋ค.
-
O(1) - (์์) Constant
- ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์๊ณผ ์๊ด์์ด ์ผ์ ํ ์คํ ์๊ฐ์ ๊ฐ์ง๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ์ค์ง ํ ๋จ๊ณ๋ง ๊ฑฐ์น๋ค.
-
O(logN) Logarithmic
-
๋ฐ์ดํฐ์์ด ๋ง์์ ธ๋, ์๊ฐ์ด ์กฐ๊ธ์ฉ ๋์ด๋๋ค.
-
์๊ฐ์ ๋น๋กํ์ฌ, ํ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐ์์ด 2์ n์น์ด ๋๋ค.
-
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋๋ฐ ํ์ํ ๋จ๊ณ๋ค์ด ์ฐ์ฐ๋ง๋ค ํน์ ์์ธ์ ์ํด ์ค์ด๋ ๋ค.
-
๋ง์ฝ ์ ๋ ฅ ์๋ฃ์ ์์ ๋ฐ๋ผ ์คํ์๊ฐ์ด ์ด log N ์ ๊ด๊ณ๋ฅผ ๋ง์กฑํ๋ค๋ฉด N์ด ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์คํ์๊ฐ์ด ์กฐ๊ธ์ฉ ๋์ด๋๋ค.
-
์ด ์ ํ์ ์ฃผ๋ก ์ปค๋ค๋ ๋ฌธ์ ๋ฅผ ์ผ์ ํ ํฌ๊ธฐ๋ฅผ ๊ฐ๋ ์์ ๋ฌธ์ ๋ก ์ชผ๊ฐค๋ ๋ํ๋๋ ์ ํ์ด๋ค.
-
์์: Binary Search
-
-
O(N) Linear
- ๋ฐ์ดํฐ์์ ๋ฐ๋ผ ์๊ฐ์ด ์ ๋น๋กํ๋ค.
- linear search, for ๋ฌธ์ ํตํ ํ์์ ์๊ฐํ๋ฉด ๋๊ฒ ๋ค.
-
O(N log N) log linear
-
๋ฐ์ดํฐ์์ด N๋ฐฐ ๋ง์ด ์ง๋ค๋ฉด, ์คํ ์๊ฐ์ N๋ฐฐ ๋ณด๋ค ์กฐ๊ธ๋ ๋ง์ ์ง๋ค. (์ ๋น๋ก ํ์ง ์๋๋ค)
-
์ด ์ ํ์ ์ปค๋ค๋ ๋ฌธ์ ๋ฅผ ๋ ๋ฆฝ์ ์ธ ์์ ๋ฌธ์ ๋ก ์ชผ๊ฐ์ด ๊ฐ๊ฐ์ ๋ํด ๋ ๋ฆฝ์ ์ผ๋ก ํด๊ฒฐํ๊ณ , ๋์ค์ ๋ค์ ๊ทธ๊ฒ๋ค์ ํ๋๋ก ๋ชจ์ผ๋ ๊ฒฝ์ฐ์ ๋ํ๋๋ค.
-
N์ด ๋๋ฐฐ๋ก ๋์ด๋๋ฉด ์คํ ์๊ฐ์ 2๋ฐฐ๋ณด๋ค ์ฝ๊ฐ ๋ ๋ง์ด ๋์ด๋๋ค.
-
์์: ํต์ํธ, ๋จธ์ง์ํธ
-
-
O(N^2) Quadratic
-
๋ฐ์ดํฐ์์ ๋ฐ๋ผ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ ๊ณฑ์ ๋น๋กํ๋ค. (ํจ์จ์ด ์ข์ง ์์, ์ฌ์ฉํ๋ฉด ์๋๋ค)
-
์ด ์ ํ์ ์ด์ค๋ฃจํ๋ด์์ ์ ๋ ฅ ์๋ฃ๋ฅผ ์ฒ๋ฆฌ ํ๋ ๊ฒฝ์ฐ์ ๋ํ๋๋ค.
-
N๊ฐ์ด ํฐ๊ฐ์ด ๋๋ฉด ์คํ ์๊ฐ์ ๊ฐ๋นํ์ง ๋ชปํ ์ ๋๋ก ์ปค์ง๊ฒ ๋๋ค.
-
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ๋จ๊ณ์ ์๋ ์ ๋ ฅ๊ฐ n์ ์ ๊ณฑ
-
์์: 2์ค for ๋ฌธ์ ์ฌ์ฉํ๋ ๋ฒ๋ธ์ํธ, ์ฝ์ ์ ๋ ฌ(insertion sort)
-
์ฑ๋ฅ ์์ : O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)