์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ
๋ฌธ์ ๋ฅผ ์ด๋ป๊ฒ ํด๊ฒฐํ ์ง์ ๋ํ ์ผ๋ จ์ ๋จ๊ณ๋ฅผ ์๊ณ ๋ฆฌ์ฆ์ด๋ผ๊ณ ํ๋ค. ์ด๋ค ๋ฌธ์ ์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฐ๋์ ๋ฐ๋ผ ์ฒ๋ฆฌ ์๊ฐ์ด ๋ฌ๋ผ์ง๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์๋ง์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋๋ฐ, ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ ์์ด ์ ์ฅํ๋ฉด ํ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋นํจ์จ์ ์ผ๋ก ์ฐ๊ฒ ๋๋ค. ์๋ฃ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ป๊ฒ ์ ์ฅํ๊ณ ์ด๋ป๊ฒ ๊ด๋ฆฌํ ์ง์ ๋ฐฉ๋ฒ์ ๋งํ๋ค.
๊ฐ๋ฐํ ๋ ์ฐ๋ฆฌ๋ ์ผ๋ง๋ ๋นจ๋ฆฌ ํด๊ฒฐํ ์ ์์์ง์ ์ผ๋ง๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฝํ ์ ์์์ง์ ์ด์ ์ ๋๋ค. ์ ํฉํ ์๊ณ ๋ฆฌ์ฆ๊ณผ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ ํํ๋ฉด ์ฒ๋ฆฌ ํจ์จ์ฑ์ ๋์ผ ์ ์๋ค.
์์ฃผ ์ฐ์ด๋ ์๋ฃ๊ตฌ์กฐ๋ ๋๋ถ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๋ฐ๋ผ ์ด๋ฏธ ๊ตฌํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ๋ก์ง์ ๊ตฌํํ์ง ์์๋ ๋๋ค. ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ณต๋ถํ๋ ๋ชฉ์ ์ ์๋ฃ๊ตฌ์กฐ๋ค์ ํน์ง์ ์ ์์๋๊ณ ์ํฉ์ ๋ฐ๋ผ ์ ํฉํ ๊ฒ์ ์ ํํ ์ ์๋ ์ฌ๊ณ ๋ ฅ์ ๊ธฐ๋ฅด๊ธฐ ์ํจ์ด๋ค.
์ฐธ๊ณ ) ๋ฉ๋ชจ๋ฆฌ๋?
ํ๋ก๊ทธ๋จ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ RAM ์ด๋ผ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ค. RAM(Random Access Memory) ๋ ๋ง ๊ทธ๋๋ก ๋๋คํ๊ฒ ์์ธ์คํ ์ ์๋ ๋ฉ๋ชจ๋ฆฌ๋ค. ๋๋ค ์ก์ธ์ค๋ ์ด๋๋ ๋ฐ๋ก ์ก์ธ์คํ ์ ์๋ค๋ ๋ป์ด๋ค. RAM์ ๋ชจ์์ ๋ณดํต ์ฌ๋ฌ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ ์์๋ก ๊ทธ๋ ค์ง๋ค. ์นธ๋ง๋ค ์ฃผ์๊ฐ ์๊ณ ์ฃผ์๋ง ์๋ค๋ฉด ์ฒซ ๋ฒ์งธ ์นธ๋ถํฐ ํ๋ํ๋ ์ฐพ์๊ฐ ํ์ ์์ด ๊ทธ ์นธ์ ๋ฐ๋ก ์ก์ธ์คํ ์ ์๋ค.
์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ์ธก์ ๋ฒ
์ปดํจํฐ๋ ๋งค์ฐ ๋น ๋ฅธ ์๋๋ก ์ฐ์ฐํ๋ค. ๊ทธ๋์ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋งํ ๋ '๋ช์ด ๊ฑธ๋ฆฐ๋ค' ๋ผ๊ณ ํ์ง ์๊ณ , ์ผ๋ง๋ ๋ง์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋์ง๋ก ๋น๊ตํ๋ค.
๋ฐ์ดํฐ๊ฐ n๊ฐ ์ ๋ ฅ๋์์ ๋ ์ผ๋ง๋ ๋ง์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋์ง๋ฅผ ์๊ฐ๋ณต์ก๋(Time Complex)๋ผ๊ณ ํ๋ค. ์ด๊ฒ์ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ ์ค์๋ ๋ํ์ ์ผ๋ก Big-O ํ๊ธฐ๋ฒ์ด ์๋ค.
๋น ์ค(Big-O) ํ๊ธฐ๋ฒ
๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋ ๋ํ์ ์ธ ํ๊ธฐ๋ฒ ์ค ํ๋์ด๋ค. ๋ฐ์ง ์ ์๋ ์ต์ , ํ๊ท , ์ต์ ์ ๊ฒฝ์ฐ์ ์ ์ค์์ ์ต์ ์ ๋ฐ์ง๊ธฐ ๋๋ฌธ์ ์ํ ์๊ฐ์ ์ํ์ ๋ํ๋ธ๋ค. ์ ๋ ฅ๋๋ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ n์ด๋ผ๊ณ ํ๋ฉด O(n) ๋ก ํ๊ธฐํ๋ค.
๋น ์ค ํ๊ธฐ๋ฒ์์๋ ์๋์ ๊ฐ์ ์ฌํญ์ ์ฃผ์ํ๋ค.
1. ์ ์ ์์ ๋ฐ์ดํฐ๋ฅผ ๊ณ ๋ คํ์ง ์๋๋ค.
์ํ์ ๋ฐ์ง๊ธฐ ๋๋ฌธ์ 10๊ฐ, 100๊ฐ ๋ฑ ์ ์ ๋์ ๋ฐ์ดํฐ์ ๋ฐ๋ฅธ ์ฑ๋ฅ ์ฐจ์ด๋ ๋ฏธ๋ฏธํ๋ค.
2. ์ต๊ณ ์ฐจํญ๋ง ํ๊ธฐํ๋ค.
'์ต๋ ์ด๋ฐ ๋น์จ๋ก ์ฆ๊ฐํ ๊ฒ์ด๋ค' ๋ผ๋ ์๋ฏธ์ด๋ฏ๋ก ์ผ์ ํ๊ฒ ์ฆ๊ฐํ๋ ์์ํญ์ ์๋ฏธ๊ฐ ์์ด ํ๊ธฐํ์ง ์๋๋ค.(n*n-1 ์ด๋ n*n ์ด๋ ์๋ฏธ๋ ๊ฐ์ผ๋...)
์๋๋ ์์ฃผ ์ฐ์ด๋ ๋น ์ค ํ๊ธฐ๋ฒ์ ์ ๋ฆฌํ ํ์ด๋ค.
ํ๊ธฐ๋ฒ | ์ค๋ช |
O(1) - constance time | ํ ๋จ๊ณ๋ง ๊ฑฐ์นจ. ๋ฐ์ดํฐ๊ฐ ์ฆ๊ฐํด๋ ์ฑ๋ฅ์ ๋ณํ๊ฐ ์์. |
O(n) | ๋ฐ์ดํฐ๊ฐ ์ฆ๊ฐํ ๋๋ง๋ค ๋จ๊ณ๊ฐ ์ถ๊ฐ๋จ. n๊ฐ๋ฉด n๋ฒ์ ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ๋ ์ . |
O(n*m) | n๋ฒ์ ๋จ๊ณ๊ฐ m๋ฒ ๋ฐ๋ณต๋จ |
O(n^2) | n๋ฒ์ ๋จ๊ณ๊ฐ ๊ฐ ํ์ฐจ ๋ n๋ฒ ๋ ๋ฐ๋ณต๋๋ ๊ฒ. |
O(2^n) - exponential time | 2์งํธ๋ฆฌ์ฒ๋ผ ๊ฐ ๋จ๊ณ๋ 2๊ฐ์ง์ ํ์ ๋จ๊ณ๊ฐ ์๊ณ ํ์ ๋จ๊ณ๋ ๊ทธ ์๋ 2๊ฐ์ง ํ์ ๋จ๊ณ๋ฅผ ๊ฐ์ง. |
O(m^n) - expoenetial time | ์ ์ฒ๋ผ ๊ฐ ๋จ๊ณ์ ํ์ ๋จ๊ณ๊ฐ m ๊ฐ๋ผ๋ฉด O(m^n) ์ผ๋ก ํํ. |
O(log n) | ๋จ๊ณ๋ฅผ ๊ฑฐ์น ๋๋ง๋ค ํด์ผ๋๋ ์์ ์ด ๋ฐ์ ๋ก ์ค์ด๋ฆ |