์๊ณ ๋ฆฌ์ฆ ์๊ฐ๋ณต์ก๋์ ๋ํ ๊ธ์ ๋ชฉ์ฐจ๋ ๋ค์๊ณผ ๊ฐ์ด ๋ง๋ค ์ ์์ ๊ฒ์ ๋๋ค.
1. ์๊ฐ๋ณต์ก๋๋ ๋ฌด์์ธ๊ฐ?
- 1.1 ์๊ฐ๋ณต์ก๋์ ๊ฐ๋
- 1.2 ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ๊ณผ์ ๊ด๊ณ
2. ์๊ฐ ๋ณต์ก๋์ ํ๊ธฐ๋ฒ
- 2.1 ๋น ์ค ํ๊ธฐ๋ฒ (Big O Notation)
- 2.2 ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ (Omega Notation)
- 2.3 ์ธํ ํ๊ธฐ๋ฒ (Theta Notation)
3. ์๊ฐ๋ณต์ก๋์ ๊ณ์ฐ
- 3.1 ์์ ์๊ฐ ๋ณต์ก๋ (O(1))
- 3.2 ์ ํ ์๊ฐ ๋ณต์ก๋ (O(n))
- 3.3 ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋ (O(log n))
- 3.4 ์ด์ฐจ ์๊ฐ ๋ณต์ก๋ (O(n^2))
- 3.5 ์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n))
4. ์๊ฐ๋ณต์ก๋์ ์ค์์ฑ
- 4.1 ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ ๊ฐ์
- 4.2 ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ
5. ์๊ฐ๋ณต์ก๋ ๋ถ์์ ์์
- 5.1 ์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์ ๋น๊ต
- 5.2 ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ ๋น๊ต
- 5.3 ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ ๋น๊ต
์ด๋ฌํ ๋ชฉ์ฐจ๋ก ์๊ณ ๋ฆฌ์ฆ ์๊ฐ ๋ณต์ก๋์ ๋ํ ๊ธ์ ์์ฑํ๋ฉด, ์๊ณ ๋ฆฌ์ฆ ์๊ฐ๋ณต์ก๋์ ๊ฐ๋ , ํ๊ธฐ๋ฒ, ๊ณ์ฐ ๋ฐฉ๋ฒ, ์ค์์ฑ ๋ฐ ์์์ ๊ฐ์ ์ฃผ์ ๋ด์ฉ์ ์ค๋ช ํ ์ ์์ต๋๋ค.
1. ์๊ฐ๋ณต์ก๋๋ ๋ฌด์์ธ๊ฐ?
1.1 ์๊ฐ๋ณต์ก๋์ ๊ฐ๋
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์์ ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์ธก์ ํ์ฌ ์ด๋ค ์ ๋ ฅ ํฌ๊ธฐ์ ๋ํด ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ๋์ํ๋์ง๋ฅผ ํ๋จํ ์ ์์ต๋๋ค.
1.2 ์๊ณ ๋ฆฌ์ฆ ์คํ ์๊ฐ๊ณผ์ ๊ด๊ณ
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณํ ์ ์์ต๋๋ค. ์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ํจ์๋ก ํํ๋๋ ๊ฒ์ผ๋ก, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง๋ฅผ ๋ํ๋ ๋๋ค.
2. ์๊ฐ ๋ณต์ก๋์ ํ๊ธฐ๋ฒ
2.1 ๋น ์ค ํ๊ธฐ๋ฒ (Big O Notation)
๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ํ์ (์ต์ ์ ๊ฒฝ์ฐ)์ ๋ํ๋ ๋๋ค. O ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์จ์ ๋ํด์ ์ผ๋ง๋ ๋๋ ค์ง๋์ง๋ฅผ ํํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, O(n)์ ์ ๋ ฅ ํฌ๊ธฐ n์ ๋ํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ํ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2.2 ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ (Omega Notation)
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ํํ์ (์ต์ ์ ๊ฒฝ์ฐ)์ ๋ํ๋ ๋๋ค. ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์จ์ ๋ํด์ ์ผ๋ง๋ ๋นจ๋ผ์ง๋์ง๋ฅผ ํํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ฮฉ(n)์ ์ ๋ ฅ ํฌ๊ธฐ n์ ๋ํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ํ์ผ๋ก ๊ฐ์ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2.3 ์ธํ ํ๊ธฐ๋ฒ (Theta Notation)
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์จ์ ๋ํด์ ์ผ๋ง๋ ์ผ์ ํ์ง๋ฅผ ๋ํ๋ ๋๋ค. ์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ ์ต์ ๊ณผ ์ต์ ์ ๊ฒฝ์ฐ์ ๋ํด์ ๋์ผํ ์คํ ์๊ฐ์ ๊ฐ์ง๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
3. ์๊ฐ๋ณต์ก๋์ ๊ณ์ฐ
3.1 ์์ ์๊ฐ ๋ณต์ก๋ (O(1))
์์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ผ์ ํ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํด๋ ์คํ ์๊ฐ์๋ ์ํฅ์ ๋ฏธ์น์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ, ์์์ ์ธ๋ฑ์ค์ ์๊ด์์ด ํญ์ ๊ฐ์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
3.2 ์ ํ ์๊ฐ ๋ณต์ก๋ (O(n))
์ ํ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด์์ ๊ฐ์ฅ ํฐ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ, ๋ชจ๋ ์์๋ฅผ ํ์ธํด์ผ ํ๋ฏ๋ก O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
3.3 ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋ (O(log n))
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋ฐ๋ผ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ํ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ณผ ์ ์๋๋ฐ, ์๋ฅผ ๋ค์ด ์ด์ง ํ์์ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ๋ ๋ฐฐ๋ก ์ฆ๊ฐํ ๋๋ง๋ค ์คํ ์๊ฐ์ด ํ ๋ฒ์ฉ ์ฆ๊ฐํฉ๋๋ค.
3.4 ์ด์ฐจ ์๊ฐ ๋ณต์ก๋ (O(n^2))
์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ ๋ชจ๋ ์์ ์์ ํ์ธํ๋ ๊ฒฝ์ฐ O(n^2)์ ์๊ฐ์ด ๊ฑธ๋ฆฝ๋๋ค.
3.5 ์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n))
์ง์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ง์์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ฏธํฉ๋๋ค. ์ด๋ ๋๋ถ๋ถ์ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ณผ ์ ์๋๋ฐ, ์๋ฅผ ๋ค์ด, ๋ชจ๋ ๋ถ๋ถ ์งํฉ์ ์ฐพ๋ ๊ฒฝ์ฐ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
4. ์๊ฐ๋ณต์ก๋์ ์ค์์ฑ
4.1 ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ ๊ฐ์
์๊ฐ๋ณต์ก๋๋ฅผ ์ดํดํ๋ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ฐํ๊ณ ๊ฐ์ ํ๋ ๋ฐ ์ค์ํฉ๋๋ค. ์๊ฐ๋ณต์ก๋ ๋ถ์์ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง ์ดํดํ๊ณ , ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์คํ ์๊ฐ์ ์ค์ผ ์ ์๋ ๋ฐฉ์์ ๊ณ ๋ คํ ์ ์์ต๋๋ค.
4.2 ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ
์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ง ์๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ๊ฒฝ์ฐ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํ์ฌ ๋นํจ์จ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ฌ ๊ฐ์ฅ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
5. ์๊ฐ๋ณต์ก๋ ๋ถ์์ ์์
5.1 ์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์ ๋น๊ต
์ ํ ๊ฒ์์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ฏ๋ก O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ์ด์ง ๊ฒ์์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋น๋กํ์ฌ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ฏ๋ก O(log n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํตํด ์ด์ง ๊ฒ์์ด ์ ํ ๊ฒ์๋ณด๋ค ๋์ฑ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
5.2 ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ ๋น๊ต
๋ฒ๋ธ ์ ๋ ฌ์ ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ฏ๋ก O(n^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ํต ์ ๋ ฌ์ ํ๊ท ์ ์ผ๋ก ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ฏ๋ก O(n log n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํตํด ํต ์ ๋ ฌ์ด ๋ฒ๋ธ ์ ๋ ฌ๋ณด๋ค ๋์ฑ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
5.3 ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ ๋น๊ต
๋์ ๊ณํ๋ฒ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ฏธ๋ฆฌ ๊ณ์ฐํ ๊ฐ์ ์ ์ฅํ์ฌ ์ค๋ณต ๊ณ์ฐ์ ๋ฐฉ์งํ๋ฏ๋ก, ์คํ ์๊ฐ์ด O(n)๋ก ํจ์จ์ ์ ๋๋ค. ๋ถํ ์ ๋ณต๋ฒ์ ์ ๋ ฅ์ ๋๋์ด์ ๋ ๋ฆฝ์ ์ผ๋ก ํด๊ฒฐํ๋ฉฐ, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ฏ๋ก O(n log n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ์ด๋ฅผ ํตํด ๋์ ๊ณํ๋ฒ์ด ๋ถํ ์ ๋ณต๋ฒ๋ณด๋ค ๋์ฑ ํจ์จ์ ์ผ๋ก ๋์ํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์ด๋ ๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํจ์ผ๋ก์จ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋์ ์ผ๋ก ํ๊ฐํ๊ณ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ ํ๊ณผ ์ฑ๋ฅ ๊ฐ์ ์ ํ ์ ์์ต๋๋ค.
1. ์๊ฐ๋ณต์ก๋๋ ๋ฌด์์ธ๊ฐ?
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ธก์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค. ์๊ฐ๋ณต์ก๋๋ฅผ ํตํด ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ฆ๊ฐํ๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ํด ์ผ๋ง๋ ํจ์จ์ ์ผ๋ก ๋์ํ๋์ง๋ฅผ ํ๋จํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ๋จ์ํ ์ฆ๊ฐํ๋์ง, ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋์ง, ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋์ง ๋ฑ ๋ค์ํ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์ธก์ ํ๊ธฐ ์ํด ์๊ฐ๋ณต์ก๋ ๊ฐ๋ ์ด ๋์ ๋์์ต๋๋ค.
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ค ์ ๋ ฅ ํฌ๊ธฐ์ ํจ์๋ก ํํ๋๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ์๋ก ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ ํจํด์ ๋ถ์ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ํ์ธํด์ผ ํ๋ ์์์ ๊ฐ์๊ฐ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ฏ๋ก ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ์๋ก ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค.
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ฐํ๊ณ ๊ฐ์ ํ๊ธฐ ์ํด ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํ์ฌ ์ด๋ค ์กฐ๊ฑด์์ ์๊ณ ๋ฆฌ์ฆ์ด ๊ฐ์ฅ ํจ์จ์ ์ผ๋ก ๋์ํ๋์ง ํ๋จํ ์ ์๊ณ , ์ํ ์๊ฐ์ ์ค์ด๊ธฐ ์ํ ์ต์ ํ ๋ฐฉ๋ฒ์ ์ฐพ์ ์ ์์ต๋๋ค.
์๊ฐ๋ณต์ก๋๋ ๋๊ฐ Big O ํ๊ธฐ๋ฒ์ผ๋ก ํํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ด๋ป๊ฒ ์์กดํ๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ , ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๋ค ์ค์์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ ๊ณตํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณ ๋ฐ ๋ถ์์ ๋์์ ์ค๋๋ค.
์ ๋ฆฌํ์๋ฉด, ์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ ๋ถ์ํ๊ธฐ ์ํ ๊ฐ๋ ์ผ๋ก, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ฐํ๊ณ ๊ฐ์ ํ๊ธฐ ์ํด ์ค์ํ ๋๊ตฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
1. ์๊ฐ๋ณต์ก๋์ ์ ์
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ธก์ ํ๊ณ ๋ถ์ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ฐํ๊ณ ๊ฐ์ ํ๊ธฐ ์ํด ์ค์ํ ๋๊ตฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๋ จํ์ฌ ๋ค์ํ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ผ์ ํ๊ฒ ์ ์ง๋๋ ๊ฒฝ์ฐ๋ ์๊ณ , ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ๋ ์์ต๋๋ค. ์ด๋ฌํ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๊ฐํ๊ธฐ ์ํด ์๊ฐ๋ณต์ก๋ ๊ฐ๋ ์ด ๋์ ๋์์ต๋๋ค.
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ค ์ ๋ ฅ ํฌ๊ธฐ์ ํจ์๋ก ํํ๋๋์ง๋ฅผ ๋ํ๋ ๋๋ค. ์ฃผ๋ก Big O (๋น ์ค) ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํํํ๋ฉฐ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง๋ฅผ ๋ํ๋ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํจ์ผ๋ก์จ ์ป์ ์ ์๋ ์ ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์คํ ์๊ฐ ์์ธก: ์๊ฐ๋ณต์ก๋๋ฅผ ์ด์ฉํด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ ์ ๋๊น์ง ํจ์จ์ ์ผ๋ก ๋์ํ๋์ง๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ ๋น๊ต: ์๊ฐ๋ณต์ก๋ ๋ถ์์ ํตํด ์๋ก ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๋ค์ ํจ์จ์ฑ์ ๋น๊ตํ ์ ์์ต๋๋ค. ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ๋ ๋น ๋ฅธ ์คํ ์๊ฐ์ ๊ฐ์ง๋์ง ํ๋จํ ์ ์์ต๋๋ค.
์ต์ ํ ๋ฐฉ์ ๋์ถ: ์๊ฐ๋ณต์ก๋ ๋ถ์์ ํตํด ์๊ณ ๋ฆฌ์ฆ์ด ์ด๋ ๋ถ๋ถ์์ ์ฑ๋ฅ์ ์ธ ํ๊ณ์ ๋๋ฌํ๋์ง ํ์ ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐํ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํ๋ ๋ฐฉ์์ ๋์ถํ ์ ์์ต๋๋ค.
์ ๋ฆฌํ์๋ฉด, ์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ ๋ถ์ํ๊ธฐ ์ํ ๊ฐ๋ ์ผ๋ก, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ ์๊ณ ๋ฆฌ์ฆ ๊ฐ์ ํจ์จ์ฑ์ ๋น๊ตํ๊ธฐ ์ํด ์ค์ํ
2. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ๊ณผ ๊ด๋ จ
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ ๋ํด ์คํ๋ ๋ ์์๋๋ ์๊ฐ์ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณํ ์ ์์ผ๋ฉฐ, ์๊ฐ๋ณต์ก๋๋ฅผ ํตํด ์ด๋ฅผ ๋ถ์ํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์ฑ๋ฅ ํ๊ฐ: ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํจ์ผ๋ก์จ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ด ์ด๋ ์ ๋์ธ์ง๋ฅผ ํ๊ฐํ ์ ์์ต๋๋ค. ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ผ๋ง๋ ์ฆ๊ฐํ๋์ง๋ฅผ ํ์ ํ ์ ์์ต๋๋ค.
์ต์ ํ: ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ํํ๋ ๋ฐฉ์์ ์ฐพ์ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ๋ถ๋ถ์ ๊ฐ์ ํ๊ฑฐ๋, ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒดํ์ฌ ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค์ํ ํจํด์ ๋ณด์ผ ์ ์์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ํจ์๋ก ๋ํ๋ด๋๋ฐ, ์ด๋ฅผ ์๊ฐ๋ณต์ก๋๋ผ๊ณ ํฉ๋๋ค. ์๊ฐ๋ณต์ก๋๋ Big O ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํํ๋ฉ๋๋ค.
์๊ฐ๋ณต์ก๋์๋ ๋ค์ํ ํํ๊ฐ ์์ต๋๋ค. ๋ช ๊ฐ์ง ๋ํ์ ์ธ ์๊ฐ๋ณต์ก๋ ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
์์ ์๊ฐ ๋ณต์ก๋ (O(1)): ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ผ์ ํ๊ฒ ์ ์ง๋๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์กฐํํ๋ ๊ฒฝ์ฐ ๋ฑ์ด ์์ต๋๋ค.
์ ํ ์๊ฐ ๋ณต์ก๋ (O(n)): ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ๋ชจ๋ ์์๋ฅผ ํ ๋ฒ์ฉ ํ์ธํ๋ ๊ฒฝ์ฐ ๋ฑ์ด ์์ต๋๋ค.
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋ (O(log n)): ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ด ์์ต๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n)): ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ ๋ฑ์ด ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ๊ธฐ ์ํด ์๊ฐ๋ณต์ก๋๋ฅผ ์ด์ฉํฉ๋๋ค. ์๊ฐ๋ณต์ก๋๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์์ธกํ๊ณ , ์ฑ๋ฅ์ ํ๊ฐํ๊ณ , ์ต์ ํ ๋ฐฉ์์ ๋์ถํ ์ ์์ต๋๋ค.
2. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ๊ณผ ๊ด๋ จ
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ์คํ๋ ๋ ์์๋๋ ์๊ฐ์ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ๋ณํ ์ ์๊ณ , ์ด๋ฅผ ๋ถ์ํ๊ธฐ ์ํด ์๊ฐ๋ณต์ก๋ ๊ฐ๋ ์ด ์ฌ์ฉ๋ฉ๋๋ค.
2.1 ์ฑ๋ฅ ํ๊ฐ๋ฅผ ์ํ ์๊ณ ๋ฆฌ์ฆ ์๋ ์๊ฐ ๋ถ์
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ๋ ์ด์ ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ธฐ ์ํด์์ ๋๋ค. ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ ๋, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ๋ณํํ๋์ง๋ฅผ ํ์ ํจ์ผ๋ก์จ ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํ๋จํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ํจ์๋ก ํํ๋๋๋ฐ, ์ด ํจ์๋ฅผ ์๊ฐ๋ณต์ก๋๋ผ๊ณ ํฉ๋๋ค.
2.2 ์๊ณ ๋ฆฌ์ฆ ์ต์ ํ๋ฅผ ์ํ ์๊ฐ๋ณต์ก๋ ๋ถ์
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ์ฌ ์ต์ ํ๋ฅผ ์๋ํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ด ๋๋ฆฐ ๋ถ๋ถ์ ์กฐ์ ํ๊ฑฐ๋, ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋์ฒดํจ์ผ๋ก์จ ์คํ ์๊ฐ์ ๋จ์ถ์ํฌ ์ ์์ต๋๋ค. ์๊ฐ๋ณต์ก๋ ๋ถ์์ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ด ๋๋ฆฐ ๋ถ๋ถ์ ํ์ธํ๊ณ , ํด๋น ๋ถ๋ถ์ ๊ฐ์ ํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ค์ํ ํํ๋ก ํํ๋ ์ ์์ต๋๋ค. ์ฃผ์ํ ์๊ฐ๋ณต์ก๋ ํํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
2.2.1 ์์ ์๊ฐ ๋ณต์ก๋ (O(1))
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ผ์ ํ๊ฒ ์ ์ง๋๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์กฐํํ๋ ๊ฒฝ์ฐ, ๋ช ๋ น๋ฌธ์ ์คํ ํ์๊ฐ ๊ณ ์ ๋์ด ์์ ๋ ๋ฑ์ด ์์ต๋๋ค. ์์ ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ด ๋ณํ์ง ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2.2.2 ์ ํ ์๊ฐ ๋ณต์ก๋ (O(n))
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ๋ชจ๋ ์์๋ฅผ ํ ๋ฒ์ฉ ํ์ธํ๋ ๊ฒฝ์ฐ, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ n์ผ ๋ n๋ฒ์ ๋ฐ๋ณต๋ฌธ์ ์คํํ๋ ๊ฒฝ์ฐ๊ฐ ํด๋น๋ฉ๋๋ค. ์ ํ ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ด ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2.2.3 ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋ (O(log n))
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ๋๋์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ํด๋น๋ฉ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ n์ผ ๋, ๋งค ๋จ๊ณ๋ง๋ค ๋ฌธ์ ์ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ผ๋ก ์ค์ฌ๋๊ฐ๋ฏ๋ก, ์คํ ์๊ฐ์ด ๋ก๊ทธ ํจ์๋ก ์ฆ๊ฐํฉ๋๋ค.
2.2.4 ์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n))
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ์ ์๊ฐ ์ง์์ ์ผ๋ก ์ฆ๊ฐํ๋ ๋ฌธ์ ๋ฅผ ๋ค๋ฃจ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ํด๋น๋ฉ๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋ฅํ ๋ชจ๋ ํด๋ฅผ ์ฐพ๊ธฐ ์ํด ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ์๋ํ๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ง์์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ๊ธฐ ์ํด ์๊ฐ๋ณต์ก๋๋ฅผ ์ฌ์ฉํฉ๋๋ค. ์๊ฐ๋ณต์ก๋๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์์ธกํ๊ณ , ์ฑ๋ฅ์ ํ๊ฐํ๊ณ , ์ต์ ํ ๋ฐฉ์์ ๋์ถํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ค์ํ ํจํด์ ๋ณด์ด์ง๋ง, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ ํ๊ฐ์ ์ต์ ํ๋ฅผ ์ํด ์ค์ํ ๊ฐ๋ ์ ๋๋ค.
2. ์๊ฐ ๋ณต์ก๋์ ํ๊ธฐ๋ฒ
์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ์ ๋ถ์ํ๊ณ ๋น๊ตํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ๊ฐ๋ ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๊ธฐ ์ํด ๋ค์ํ ํ๊ธฐ๋ฒ์ด ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฌํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๋ ์๊ฐ๊ณผ ์ ๋ ฅ ํฌ๊ธฐ ์ฌ์ด์ ๊ด๊ณ๋ฅผ ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ ๋๋ค.
2.1 Big O ํ๊ธฐ๋ฒ
Big O ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ๊ฒฝ์ฐ(์ต๋ ์๊ฐ ์์)๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ํ์ ์ผ๋ก ํํํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, Big O ํ๊ธฐ๋ฒ์ O(g(n))์ผ๋ก ํํํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ํ ํจ์๋ก, f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ํํํฉ๋๋ค.
Big O ํ๊ธฐ๋ฒ์ ์ํ ํจ์ ์ค์์ ๊ฐ์ฅ ํฐ ์ฆ๊ฐ์จ์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋๋ต์ ์ผ๋ก ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ O(1), O(n), O(log n), O(n^2)์ธ ๊ฒฝ์ฐ ๋ฑ์ด ์์ต๋๋ค.
2.2 Omega ํ๊ธฐ๋ฒ
Omega ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ๊ฒฝ์ฐ(์ต์ ์๊ฐ ์์)๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ํํ์ ์ ํํํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, Omega ํ๊ธฐ๋ฒ์ ฮฉ(g(n))์ผ๋ก ํํํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ํํ ํจ์๋ก, f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ํํํฉ๋๋ค.
Omega ํ๊ธฐ๋ฒ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต๊ณ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ ฮฉ(1), ฮฉ(n), ฮฉ(log n), ฮฉ(n^2)์ธ ๊ฒฝ์ฐ ๋ฑ์ด ์์ต๋๋ค.
2.3 Theta ํ๊ธฐ๋ฒ
Theta ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ํ๊ท ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ์ํ๊ณผ ํํ์ด ๋์ผํ ๊ฒฝ์ฐ๋ฅผ ํํํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, Theta ํ๊ธฐ๋ฒ์ ฮ(g(n))์ผ๋ก ํํํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ํ๊ณผ ํํ์ผ๋ก, f(n)์ ์ฆ๊ฐ์จ์ ์ ํํ๊ฒ ํํํฉ๋๋ค.
Theta ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ํ๊ท ์ ์ธ ์ฆ๊ฐ์จ์ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ํ๊ท ์ ์ธ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๊ฐ ฮ(1), ฮ(n), ฮ(log n), ฮ(n^2)์ธ ๊ฒฝ์ฐ ๋ฑ์ด ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๊ธฐ ์ํด Big O, Omega, Theta ํ๊ธฐ๋ฒ์ด ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ํํํ๊ณ , ์๊ณ ๋ฆฌ์ฆ๋ค ๊ฐ์ ์ฑ๋ฅ์ ๋น๊ตํ๊ณ ์ต์ ํ ๋ฐฉ์์ ๋์ถํ ์ ์์ต๋๋ค.
๋น ์ค ํ๊ธฐ๋ฒ (Big O Notation)
๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ๊ธฐ๋ฒ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง๋ฅผ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋น๊ตํ๊ณ ์์ธกํ๊ธฐ ์ํด ์ค์ํ ๋๊ตฌ์ ๋๋ค.
๋น ์ค ํ๊ธฐ๋ฒ์ O ํ๊ธฐ๋ฒ์ผ๋ก ํํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ํ์ ๋ํ๋ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, ์ด ํจ์๋ฅผ O(g(n))์ด๋ผ๊ณ ํ๊ธฐํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ๋ํ๋ด๋ ํจ์์ ๋๋ค.
๋น ์ค ํ๊ธฐ๋ฒ์ ์ํ ํจ์ ์ค์์ ๊ฐ์ฅ ํฐ ์ฆ๊ฐ์จ์ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋๋ต์ ์ผ๋ก ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, O(1), O(n), O(log n), O(n^2)์ ๊ฐ์ ํํ๋ก ํ๊ธฐ๋ฉ๋๋ค.
๋น ์ค ํ๊ธฐ๋ฒ์ ์์
O(1) - ์์ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ๊ฐ์ ์กฐํํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ธ๋ฑ์ค๋ฅผ ์๊ณ ์๋ค๋ฉด ์ํ๋ ๊ฐ์ O(1)์ ์๊ฐ ๋ณต์ก๋๋ก ์กฐํํ ์ ์์ต๋๋ค.O(n) - ์ ํ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์์ ๋ชจ๋ ์์๋ฅผ ํ ๋ฒ์ฉ ํ์ธํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ์ธํ๋ ค๋ฉด ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํ๋ ์๊ฐ์ด ์์๋ฉ๋๋ค.O(log n) - ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ๋ํ์ ์ธ ์์ ๋๋ค. ์ ๋ ฅ์ด ์ ๋ ฌ๋ ์ํ์์ ์ด์ง ํ์์ ์ํํ๋ฉด, ์ ๋ ฅ ํฌ๊ธฐ๋ฅผ ์ ๋ฐ์ฉ ์ค์ฌ๊ฐ๋ฉฐ ํ์ํ๋ฏ๋ก ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฉ๋๋ค.O(n^2) - ์ด์ฐจ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ชจ๋ ์์ ์์ ํ์ธํ๋ ๊ฒฝ์ฐ ์ด์ฐจ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฉ๋๋ค.
๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๊ฒฐํ๊ณ ๋ช ํํ๊ฒ ํ๊ธฐํ ์ ์๋๋ก ๋์์ค๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์์ธกํ๊ณ , ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๊ตํ์ฌ ์ต์ ํ ๋ฐฉ์์ ๋์ถํ ์ ์์ต๋๋ค.
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ (Omega Notation)
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ํํ์ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๊ฐ๋ณต์ก๋๋ฅผ ๋ํ๋ด๋ ์ค์ํ ๋๊ตฌ๋ก ์ฌ์ฉ๋ฉ๋๋ค. ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ๊ฒฝ์ฐ(์ต์ ์๊ฐ ์์)๋ฅผ ์์ธกํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋น๊ตํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ฮฉ ํ๊ธฐ๋ฒ์ผ๋ก ํํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ํํ์ ๋ํ๋ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, ์ด ํจ์๋ฅผ ฮฉ(g(n))์ด๋ผ๊ณ ํ๊ธฐํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ๋ํ๋ด๋ ํจ์์ ๋๋ค.
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ํํ ํจ์ ์ค์์ ๊ฐ์ฅ ์์ ์ฆ๊ฐ์จ์ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋๋ต์ ์ผ๋ก ์์ธกํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ฮฉ(1), ฮฉ(n), ฮฉ(log n), ฮฉ(n^2)์ ๊ฐ์ ํํ๋ก ํ๊ธฐ๋ฉ๋๋ค.
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์์
ฮฉ(1) - ์์ ์๊ฐ ๋ณต์ก๋์ ํํ
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ด๋ค ์ ๋ ฅ์๋ ๋ณํ์ง ์์ต๋๋ค. O(1)๊ณผ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ต๋๋ค.ฮฉ(n) - ์ ํ ์๊ฐ ๋ณต์ก๋์ ํํ
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. O(n)๊ณผ ์ํ ๋ฐ ํํ์ด ๋์ผํฉ๋๋ค.ฮฉ(log n) - ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋์ ํํ
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. O(log n)๊ณผ ์ํ ๋ฐ ํํ์ด ๋์ผํฉ๋๋ค.ฮฉ(n^2) - ์ด์ฐจ ์๊ฐ ๋ณต์ก๋์ ํํ
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ด์ฐจ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. O(n^2)๊ณผ ์ํ ๋ฐ ํํ์ด ๋์ผํฉ๋๋ค.
์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ด๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต๊ณ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ์ ํ๊ณ , ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ ๋น๊ตํ์ฌ ์ต์ ์ ์ ํ์ ํ ์ ์์ต๋๋ค.
์ธํ ํ๊ธฐ๋ฒ (Theta Notation)
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ์ํ๊ณผ ํํ์ด ๋์ผํ ๊ฒฝ์ฐ๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ๊ณผ ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ํจ๊ป ๋ํ๋ด๋ ๋ฐฉ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ ์ ํํ๊ฒ ๋น๊ตํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ฮ ํ๊ธฐ๋ฒ์ผ๋ก ํํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ํ ๋ฐ ํํ์ด ๋์ผํ ํจ์๋ฅผ ๋ํ๋ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์์ ๋, ์ด ํจ์๋ฅผ ฮ(g(n))์ด๋ผ๊ณ ํ๊ธฐํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ๋ํ๋ด๋ ํจ์์ ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ์ค์ํ ์ด์ ๋ ๋น ์ค ํ๊ธฐ๋ฒ์ด ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ํ๋ง์ ๋ํ๋ด๋ ๋ฐ๋ฉด, ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ํํ๋ง์ ๋ํ๋ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ผ์ ์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋ณด๋ค ์ ํํ๊ฒ ์์ธกํ ์ ์์ต๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ์์
ฮ(1) - ์์ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ ๊ฒฝ์ฐ์ ๋๋ค. ์ํ๊ณผ ํํ์ด ๋์ผํ๋ฏ๋ก, ์คํ ์๊ฐ์ด ์ด๋ค ์ ๋ ฅ์๋ ๋ณํ์ง ์์ต๋๋ค.ฮ(n) - ์ ํ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์ํ๊ณผ ํํ์ด ๋์ผํ๋ฉฐ, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.ฮ(log n) - ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์ํ๊ณผ ํํ์ด ๋์ผํ๋ฉฐ, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.ฮ(n^2) - ์ด์ฐจ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์ด๋ฏ๋ก, ์ํ๊ณผ ํํ์ด ๋์ผํ๋ฉฐ, ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์ด์ฐจ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ข ๋ ์ ํํ๊ฒ ๋น๊ตํ๋ ๋ฐ ๋์์ ์ค๋๋ค. ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ํ ๋ณด๋ค ์ ํํ ํ์ ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ (Theta Notation)
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ์ํ๊ณผ ํํ์ด ๋์ผํ ๊ฒฝ์ฐ๋ฅผ ํ๊ธฐํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ์ค๋ช ํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ ์ ํํ๊ฒ ๋น๊ตํ๋ ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ๊ฐ๋
์ธํ ํ๊ธฐ๋ฒ์ ฮ ํ๊ธฐ๋ฒ์ผ๋ก ํํ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋์ ์ํ๊ณผ ํํ์ด ๋์ผํ ํจ์๋ฅผ ๋ํ๋ ๋๋ค. ๋ฐ๋ผ์ ์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ํจ์ f(n)์ด ์ฃผ์ด์ก์ ๋, f(n)์ ฮ(g(n))๋ก ํ๊ธฐํฉ๋๋ค. ์ฌ๊ธฐ์ g(n)์ f(n)์ ์ฆ๊ฐ์จ์ ๋๋ต์ ์ผ๋ก ๋ํ๋ด๋ ํจ์์ ๋๋ค. ์ธํ ํ๊ธฐ๋ฒ์ ๋ชจ๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ํด์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด g(n)์ ๋น๋กํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ์์
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต๊ณ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ช ๊ฐ์ง ์ธํ ํ๊ธฐ๋ฒ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
ฮ(1) - ์์ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ์ต์ ์ ๊ฒฝ์ฐ๋ก, ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ๋ณํด๋ ์คํ ์๊ฐ์ ๋ณํ์ง ์์ต๋๋ค.ฮ(n) - ์ ํ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ์ต์ ์ ๊ฒฝ์ฐ๋ก, ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.ฮ(log n) - ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ์ต์ ์ ๊ฒฝ์ฐ๋ก, ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ๋ ๋ก๊ทธ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.ฮ(n^2) - ์ด์ฐจ ์๊ฐ ๋ณต์ก๋
์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ์ ๋๋ค. ์ด๋ ์ต์ ์ ๊ฒฝ์ฐ๋ก, ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ๋ ์ด์ฐจ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค.
์ธํ ํ๊ธฐ๋ฒ์ ํ์ฉ
์ธํ ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ๋ํ ์์ธก๊ณผ ์ฑ๋ฅ ๋น๊ต์ ๋์์ ์ค๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ์์ธกํ์ฌ, ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ์ ๋น๊ต๋ฅผ ํตํด ์ต์ ์ ์ ํ์ ํ ์ ์์ต๋๋ค. ์ธํ ํ๊ธฐ๋ฒ์ ๋น ์ค์ ์ค๋ฉ๊ฐ ํ๊ธฐ๋ฒ๊ณผ ํจ๊ป ์ฌ์ฉ๋๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋ ์ ํํ๊ฒ ํ๊ฐํ ์ ์๋๋ก ๋์์ค๋๋ค.
3. ์๊ฐ๋ณต์ก๋์ ๊ณ์ฐ
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ๋ํ๋ด๋ ๋ฐ ์ฌ์ฉ๋๋ ์ค์ํ ๊ฐ๋ ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ณ ์ต์ ์ ์ ํ์ ํ ์ ์๋๋ฐ์ ๋์์ ์ค๋๋ค. ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๊ธฐ ์ํด์๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋จ๊ณ์ ์ํ ์๊ฐ์ ๋ถ์ํ๊ณ ์ด๋ฅผ ์ข ํฉ์ ์ผ๋ก ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ ๋ฐฉ๋ฒ
์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ์ ๋ค์ํ์ง๋ง, ๋ํ์ ์ผ๋ก ๋น ์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํฉ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์ํ์ ๋ํ๋ด๋ ํ๊ธฐ๋ฒ์ผ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์ ๋๋ฆฌ ์ฌ์ฉ๋ฉ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ๊ฐ ๋จ๊ณ๋ฅผ ๊ธฐ์ค์ผ๋ก ์ํ ์๊ฐ์ ๋ถ์ํฉ๋๋ค. ์ด๋, ๋ฃจํ์ ๋ฐ๋ณต ํ์, ์กฐ๊ฑด๋ฌธ์ ์คํ ์ฌ๋ถ ๋ฑ์ ๊ณ ๋ คํ์ฌ ๊ฐ ๋จ๊ณ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋์ถํฉ๋๋ค.
๊ฐ ๋จ๊ณ์ ์๊ฐ๋ณต์ก๋๋ฅผ ํฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฒด ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํฉ๋๋ค. ์ด๋, ๋น ์ค ํ๊ธฐ๋ฒ์์๋ ๊ฐ์ฅ ํฐ ์ํฅ์ ์ฃผ๋ ๋จ๊ณ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ ํํ๊ฒ ๋ฉ๋๋ค. ์ฆ, ๊ฐ์ฅ ํฐ ์ํฅ์ ์ฃผ๋ ๋จ๊ณ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฒฐ์ ํ๊ฒ ๋ฉ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋น ์ค ํ๊ธฐ๋ฒ์ผ๋ก ํ๊ธฐํฉ๋๋ค. ์ด๋, ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํ ๊ฒฐ๊ณผ์ ๋ฐ๋ผ O(1), O(log n), O(n), O(n^2) ๋ฑ์ผ๋ก ํ๊ธฐ๋ฉ๋๋ค.
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ ์์
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ค์์ n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์์น๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ ์์์ ๋๋ค.
- ๋ฆฌ์คํธ์์ ์์๋ฅผ ํ๋์ฉ ํ์ธํ๋ ๋จ๊ณ๋ n๋ฒ ๋ฐ๋ณต๋๋ฏ๋ก O(n)์ ๋๋ค.
- ํน์ ๊ฐ๊ณผ ๋ฆฌ์คํธ์ ์์๋ฅผ ๋น๊ตํ๋ ๋จ๊ณ๋ ์์ ์๊ฐ์ผ๋ก O(1)์ ๋๋ค.
๋ฐ๋ผ์ ์ด ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฒด ์๊ฐ๋ณต์ก๋๋ O(n)์ ๋๋ค.
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์ ์์
์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋น๊ตํ๋ ๋ฐ์ ๋์์ ์ค๋๋ค. ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ํด ์๊ฐ๋ณต์ก๋ ๊ณ์ฐ์ ํ์์ ์ธ ์์์ ๋๋ค. ๋น ์ค ํ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ์ด๋ฅผ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ ํํ๊ฒ ํ๊ฐํ ์ ์์ต๋๋ค.
์์ ์๊ฐ ๋ณต์ก๋ (O(1))
์์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์์๋ก ๊ณ ์ ๋์ด ์๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ณํ์ง ์๊ณ ํญ์ ์ผ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์์ ์๊ฐ ๋ณต์ก๋์ ์์
์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐฐ์ด์์ ํน์ ์ธ๋ฑ์ค์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ: ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ธ๋ฑ์ค์ ์ง์ ์ ๊ทผํ ์ ์๊ธฐ ๋๋ฌธ์ ์คํ ์๊ฐ์ ํญ์ ์ผ์ ํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(1)์ ๋๋ค.
๋จ์ผ ์ฐ์ฐ ์ํ: ํ๋์ ์ฐ์ฐ์ ์ํํ๋ ๊ฒฝ์ฐ์๋ ์ ๋ ฅ ํฌ๊ธฐ์ ์ํฅ์ ๋ฐ์ง ์์ผ๋ฏ๋ก ์คํ ์๊ฐ์ ํญ์ ์ผ์ ํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋ ๋ํ O(1)์ ๋๋ค.
์์ ์๊ฐ ๋ณต์ก๋์ ์์
์์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฌด๊ดํ๊ฒ ์ผ์ ํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ผ๋ง๊ฐ ๋๋ ์คํ ์๊ฐ์ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์ต์ ์ ๊ฒฝ์ฐ๋ก, ์คํ ์๊ฐ์ ์์ธก์ด ์ฉ์ดํ๋ฉฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ์ ์ ์ฉํฉ๋๋ค.
์์ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ๊ณ ์ ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ํด์ง๋ผ๋ ํญ์ ์ผ์ ํ ์คํ ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ ์ ํธ๋ฉ๋๋ค. ์์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ฉด ์ ๋ ฅ ํฌ๊ธฐ์ ๊ด๊ณ์์ด ์ผ์ ํ ์คํ ์๊ฐ์ ์ ์งํ ์ ์์ผ๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์์ธกํ๊ณ ๋น๊ตํ๋ ๋ฐ์๋ ์ฉ์ดํฉ๋๋ค.
์ ํ ์๊ฐ ๋ณต์ก๋ (O(n))
์ ํ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๋น๋กํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ ํ ์๊ฐ ๋ณต์ก๋์ ์์
์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ๊ฒฝ์ฐ: ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ๊ฐ ์์๋ฅผ ํ ๋ฒ์ฉ๋ง ํ์ธํ๋ฏ๋ก, ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(n)์ ๋๋ค.
์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฆฌ์คํธ์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ: ๋ฆฌ์คํธ์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ๊ฐ ์์๋ฅผ ํ์ธํ๊ณ ์ผ์นํ๋ ๊ฐ์ ์ฐพ์์ผ ํ๋ฏ๋ก, ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋ ์ญ์ O(n)์ ๋๋ค.
์ ํ ์๊ฐ ๋ณต์ก๋์ ์์
์ ํ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ด ์ปค์ง์๋ก ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ๋ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๊ฒ ๋ฉ๋๋ค. ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ ์ฆ๊ฐ ํจํด์ ์์ธกํ ์ ์์ผ๋ฉฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๋ ๋ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
์ ํ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๋น๋กํ๋ฏ๋ก, ์ ๋ ฅ์ด ์ปค์ง๋๋ผ๋ ์ผ์ ํ ์คํ ์๊ฐ์ ๋ณด์ฅํฉ๋๋ค. ๋ฐ๋ผ์ ์ ํ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ค์ํ ์ค์ ๋ฌธ์ ์ ํ์ฉ๋ฉ๋๋ค. ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ํฐ ์ํฉ์์๋ ํจ์จ์ ์ผ๋ก ๋์ํ๋ ์ ํ ์๊ฐ ๋ณต์ก๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํจ์ผ๋ก์จ, ์คํ ์๊ฐ์ ์์ธกํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋ (O(log n))
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋น๋กํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋๋ผ๋ ์คํ ์๊ฐ์ด ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋์ ์์
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ง ํ์: ์ ๋ ฅ์ด ์ ๋ ฌ๋์ด ์๋ ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ก ๋ค์ด๋ณด๊ฒ ์ต๋๋ค. ์ด์ง ํ์์ ์ฃผ์ด์ง ๋ฐฐ์ด์ ๋งค๋ฒ ์ ๋ฐ์ผ๋ก ๋๋์ด ํ์ํ๋ฏ๋ก, ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(log n)์ ๋๋ค.
ํ(Heap) ์๋ฃ๊ตฌ์กฐ์ ์ฝ์ , ์ญ์ : ํ ์๋ฃ๊ตฌ์กฐ๋ ํญ์ ๋น ๋ฅธ ์๊ฐ ์์ ์ต๋ ๋๋ ์ต์๊ฐ์ ์ฐพ์ ์ ์๋๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ํ์ ์์๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๋ ์ฐ์ฐ๋ ํธ๋ฆฌ์ ๋์ด์ ๋ฐ๋ผ ์ํ๋๋ฏ๋ก, ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋ ์ญ์ O(log n)์ ๋๋ค.
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋์ ์์
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ด ์ปค์ ธ๋ ์คํ ์๊ฐ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ํ๊ฐ๋ฉ๋๋ค. ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋์ฉ๋์ ๋ฐ์ดํฐ์์๋ ๋น ๋ฅธ ์คํ ์๊ฐ์ ์ ๊ณตํ๋ฏ๋ก, ๋ง์ ๋ฌธ์ ํด๊ฒฐ์ ํ์ฉ๋ฉ๋๋ค.
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ํจ์จ์ ์ ๋๋ค. ๋ํ์ ์ธ ์๋ก ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ด ์์ต๋๋ค. ์ด์ง ํ์์ ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์์ ๋ ํน์ ๊ฐ์ ์ฐพ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ์คํ ์๊ฐ์ด ๋ก๊ทธ์ ๋น๋กํ์ฌ ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋น ๋ฅธ ๊ฒ์์ ์ ๊ณตํฉ๋๋ค. ๋ฐ๋ผ์ ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ๋น ๋ฅด๊ฒ ํ์ํด์ผ ํ ๋ ๋ก๊ทธ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด์ฐจ ์๊ฐ ๋ณต์ก๋ (O(n^2))
์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ฉด ์คํ ์๊ฐ์ด ์ ๊ณฑ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ด์ฐจ ์๊ฐ ๋ณต์ก๋์ ์์
์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ: ๋ฒ๋ธ ์ ๋ ฌ์ด๋ ์ฝ์ ์ ๋ ฌ๊ณผ ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ์ด์ค ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ์ ๋ ฌ ์์ ์ ์ํํฉ๋๋ค. ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ ์์์ ๊ฐ์์ ๋น๋กํ์ฌ ์คํ๋๊ณ , ๋ด๋ถ ๋ฐ๋ณต๋ฌธ์ ์ฒซ ๋ฒ์งธ ๋ฐ๋ณต๋ฌธ์ด ํ ๋ฒ ์คํ๋ ๋๋ง๋ค ์์์ ๊ฐ์์ ๋น๋กํ์ฌ ์คํ๋๋ฏ๋ก, ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(n^2)์ ๋๋ค.
2์ฐจ์ ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ ๊ฒฝ์ฐ: 2์ฐจ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ n * n ์ธ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ํ์ํ๊ธฐ ์ํด์๋ ๋ ๊ฐ์ ๋ฐ๋ณต๋ฌธ์ด ํ์ํฉ๋๋ค. ๊ฐ ๋ฐ๋ณต๋ฌธ์ด ๋ฐฐ์ด์ ํ๊ณผ ์ด์ ์์ฐจ์ ์ผ๋ก ํ์ํ๋ฏ๋ก ์คํ ์๊ฐ์ ์ ๋ ฅ ํฌ๊ธฐ์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋ ์ญ์ O(n^2)์ ๋๋ค.
์ด์ฐจ ์๊ฐ ๋ณต์ก๋์ ์์
์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ์ ๊ณฑ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ด ๋งค์ฐ ์ปค์ง๋ฉด ์คํ ์๊ฐ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ์ฌ ๋นํจ์จ์ ์ด๋ผ๊ณ ํ๊ฐ๋ฉ๋๋ค.
์ด์ฐจ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ๋ฏ๋ก, ๋์ฉ๋์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ๋๋ ํจ์จ์ ์ด์ง ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด์ฐจ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ํ์ฉํ๋ ์ํฉ์์๋ ์ ๋ ฅ ํฌ๊ธฐ๋ฅผ ์ ํํ๊ฑฐ๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์ ๋ ฌ ์์ ์๋ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ธ ํต ์ ๋ ฌ์ด๋ ๋ณํฉ ์ ๋ ฌ๊ณผ ๊ฐ์ O(n log n) ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ฐ๋์งํฉ๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n))
์ง์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ง์์ ๋น๋กํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ์์
์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
์์์ ๋ถ๋ถ์งํฉ์ ๋ชจ๋ ์์ฑํ๋ ๊ฒฝ์ฐ: n ๊ฐ์ ์์๊ฐ ์๋ ์งํฉ์์ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ์์ฑํ๊ธฐ ์ํด์๋ ๊ฐ ์์๊ฐ ํฌํจ๋๊ฑฐ๋ ํฌํจ๋์ง ์๋ ๋ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์กด์ฌํฉ๋๋ค. ๋ฐ๋ผ์ ๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 2^n ๊ฐ๊ฐ ๋๊ณ , ๋ถ๋ถ์งํฉ์ ์์ฑํ๊ธฐ ์ํ ์ฐ์ฐ์ ๊ฐ ๋ถ๋ถ์งํฉ์ ๋ํด ํ ๋ฒ์ฉ ์ํ๋๋ฏ๋ก ์คํ ์๊ฐ์ ์ ๋ ฅ์ ํฌ๊ธฐ์ธ 2^n ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋๋ O(2^n)์ ๋๋ค.
์์ ํ์ (Brute force): ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ฅผ ํ๋ํ๋ ์๋ํ์ฌ ์ ๋ต์ ์ฐพ๋ ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ผ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๊ฐ ์ฆ๊ฐํฉ๋๋ค. ๊ฐ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์๋ํ๋ ๋ฐ ๋๋ ์ฐ์ฐ์ด ์์ ์๊ฐ์ด๋ผ๊ณ ๊ฐ์ ํ๋๋ผ๋, ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์๋ํด์ผ ํ๋ฏ๋ก ์คํ ์๊ฐ์ 2^n ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค. ์ด ๊ฒฝ์ฐ์ ์๊ฐ ๋ณต์ก๋ ์ญ์ O(2^n)์ ๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ์์
์ง์ ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ๋ฐ๋ผ์ ์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ด ๋งค์ฐ ์ปค์ง๋ฉด ์คํ ์๊ฐ์ด ๊ธ๊ฒฉํ ์ฆ๊ฐํ์ฌ ๋งค์ฐ ํจ์จ์ ์ด์ง ์๋ค๊ณ ํ๊ฐ๋ฉ๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ฉด์ ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ด์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ํน์ํ ๋ฌธ์ ์ ๋ํด์๋ ์ง์ ์๊ฐ ๋ณต์ก๋๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์์ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ํ์์ ์ฌ์ฉํ์ฌ ์ต์ ์ ํด๋ฅผ ๊ตฌํด์ผ ํ๋ ๊ฒฝ์ฐ ๋๋ ๋นํธ ์ฐ์ฐ์ ํ์ฉํ๋ ์ํธ ํด๋ ๊ณผ ๊ฐ์ ๋ฌธ์ ์์๋ ์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์๋ฐ์ ์์ต๋๋ค. ํ์ง๋ง ์ฃผ์ด์ง ๋ฌธ์ ๊ฐ ๋คํญ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ํด๊ฒฐ์ฑ ์ด ์๋์ง ํ์ธํด๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋ (O(2^n))
์ง์ ์๊ฐ ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ ๋ ฅ ํฌ๊ธฐ์ ์ง์์ ๋น๋กํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ํ๋ ๋๋ค. ์ฆ, ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ์๋ฏธ
์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํฉ๋๋ค. ์ด๋ ๋งค์ฐ ํฐ ์ ๋ ฅ์ ๋ํด์๋ ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฉฐ, ์คํ ์๊ฐ์ด ๋๋ฌด ๊ธธ์ด์ง ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ฐ๋ฅํ๋ค๋ฉด ์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ ๊ฒ์ ํผํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ์์
์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ๊ฐ์ง ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ์์์ ๋ถ๋ถ์งํฉ ์์ฑ
n ๊ฐ์ ์์๋ฅผ ๊ฐ๋ ์งํฉ์์ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ์์ฑํ๋ ๋ฌธ์ ๋ฅผ ์๊ฐํด๋ณด๊ฒ ์ต๋๋ค. ๊ฐ ์์๋ ์ ํ๋๊ฑฐ๋ ์ ํ๋์ง ์๋ ๋ ๊ฐ์ง์ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ถ๋ถ์งํฉ์ ๊ฐ์๋ 2^n ๊ฐ๊ฐ ๋ฉ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๋ถ๋ถ์งํฉ์ ์์ฑํ๊ธฐ ์ํด ๋งค์ฐ ๋ง์ ์ฐ์ฐ์ด ํ์ํ๋ฉฐ, ์คํ ์๊ฐ์ ์ ๋ ฅ์ ํฌ๊ธฐ์ธ 2^n ์ ๋น๋กํ์ฌ ์ฆ๊ฐํฉ๋๋ค.
2. ์์ ํ์
์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ๊ฐ๋ฅํ ๊ฒฝ์ฐ๋ฅผ ํ๋ํ๋ ์๋ํ์ฌ ์ ๋ต์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ด ๊ฒฝ์ฐ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์์ ๋ํด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ๋ ฅ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด 2^n ์ ๋น๋กํ๊ฒ ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฅ์ด ํฐ ๊ฒฝ์ฐ์๋ ์คํ ์๊ฐ์ด ๋งค์ฐ ๊ธธ์ด์ง ์ ์์ต๋๋ค.
์ง์ ์๊ฐ ๋ณต์ก๋์ ํ์ฉ
์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์ปค์ง์๋ก ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ์ฆ๊ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ด์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ช ๊ฐ์ง ํน์ํ ๋ฌธ์ ์ ๋ํด์๋ ์ง์ ์๊ฐ ๋ณต์ก๋๊ฐ ํ์ํ ๊ฒฝ์ฐ๋ ์์ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ์๋ ์ต์ ์ ํด๋ฅผ ๊ตฌํ๊ธฐ ์ํด ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํด์ผ ํ๋ ๊ฒฝ์ฐ์ด๊ฑฐ๋ ํน์ ํ ์ฑ์ง ๋๋ ์ ์ฝ ์กฐ๊ฑด์ผ๋ก ์ธํด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ์ ๋๋ค. ํ์ง๋ง ๊ฐ๋ฅํ๋ค๋ฉด ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด ์ข์ผ๋ฏ๋ก, ์ฃผ์ด์ง ๋ฌธ์ ์ ๋ํด์ ์ง์ ์๊ฐ ๋ณต์ก๋๋ฅผ ๊ฐ๋์ง ํ์ธํ ํ์ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ ํฉ๋๋ค.
4. ์๊ฐ๋ณต์ก๋์ ์ค์์ฑ
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ๋ํ๋ด๋ ์งํ๋ก, ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ๊ณผ ๊ด๋ จํ์ฌ ๋งค์ฐ ์ค์ํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๊ฑฐ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
ํจ์จ์ฑ๊ณผ ์คํ ์๊ฐ
์๊ฐ๋ณต์ก๋๋ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ๊ณผ ์ง์ ์ ์ผ๋ก ์ฐ๊ด๋์ด ์์ต๋๋ค. ์คํ ์๊ฐ์ด ์งง์์๋ก ์๊ณ ๋ฆฌ์ฆ์ด ๋น ๋ฅด๊ฒ ๋์ํ๊ณ , ๋ฐ๋๋ก ์คํ ์๊ฐ์ด ๊ธธ์ด์ง์๋ก ์๊ณ ๋ฆฌ์ฆ ์คํ์ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๋ง์์ง๋๋ค. ๋ฐ๋ผ์ ์คํ ์๊ฐ์ ์ต์ํํ๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ถํ์ํ ์๊ฐ๊ณผ ์์์ ๋ญ๋น๋ฅผ ์ค์ผ ์ ์์ผ๋ฉฐ, ๋น ๋ฅธ ์คํ ์๊ฐ์ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํต๋๋ค.
๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์คํ ์๊ฐ์ด ๊ธด ์๊ณ ๋ฆฌ์ฆ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์ ํฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ์๋ฐฑ๋ง ๊ฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ฒฝ์ฐ, ์คํ ์๊ฐ์ด ๋งค์ฐ ์ค๋ ๊ฑธ๋ฆด ์ ์๊ณ ์ฌ์ง์ด ์คํ์ด ๋ถ๊ฐ๋ฅํ ์๋ ์์ต๋๋ค. ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ ํ๋์ ๋ง์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์์คํ ์์ ํ์์ ์ธ ์์์ด๋ฏ๋ก, ์๊ฐ๋ณต์ก๋์ ๋ํ ๊ณ ๋ ค๊ฐ ํ์์ ์ ๋๋ค.
์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ
์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํด๋ ์คํ ์๊ฐ์ด ๋์ด๋๋ ํญ์ด ๋น๊ต์ ์์ต๋๋ค. ์ด๋ ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ผ์ผ๋ง ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ ๋ ฅ์ ๊ท๋ชจ๊ฐ ์ปค์ ธ๋ ์คํ ์๊ฐ์ ์ฆ๊ฐ์จ์ด ์ ํ์ ์ธ ๊ฒฝ์ฐ, ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ํ๋ก๊ทธ๋จ์ด ์ปค๋ค๋ฅธ ์์ ์ ๋ํด์๋ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์์ต๋๋ค. ๋ฐ๋๋ก ์๊ฐ๋ณต์ก๋๊ฐ ๋์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ๊ธฐํ๊ธ์์ ์ผ๋ก ๋์ด๋ ์ ์๊ธฐ ๋๋ฌธ์, ์์ ๊ท๋ชจ์ ๋ฌธ์ ์๋ง ์ ์ฉํ ์ ์๋ ํ๊ณ๊ฐ ์์ต๋๋ค.
์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ ๋ คํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๊ณ ์ค๊ณํจ์ผ๋ก์จ ์คํ ์๊ฐ์ ์ต์ํํ๊ณ , ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์ ํ๋ณดํ ์ ์์ต๋๋ค.
- ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ๊ณผ ์ฑ๋ฅ ๊ฐ์
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ์ ์ต์ํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํฅ์์ํค๋ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ํต์ฌ์ ๋๋ค. ์ด๋ฅผ ์ํด ๋ช ๊ฐ์ง ์ค์ํ ๊ฐ๋ ๋ค์ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
Big O ํ๊ธฐ๋ฒ
Big O ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด๋ ์์ ์ฌ์ฉ๋์ ํํํ๋ ๋ฐฉ์ ์ค ๊ฐ์ฅ ํํ๊ฒ ์ฌ์ฉ๋๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ฅผ Big O ํ๊ธฐ๋ฒ์ผ๋ก ํํํ๋ฉด, ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์์ต๋๋ค. Big O ํ๊ธฐ๋ฒ์์๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ํ ์ํ๊ฐ์ผ๋ก ํํํฉ๋๋ค. ์๋ฅผ ๋ค์ด, O(n)์ ์ ๋ ฅ ํฌ๊ธฐ n์ ๋น๋กํ์ฌ ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ์๋ฏธํฉ๋๋ค. O(n^2)๋ ์ ๋ ฅ ํฌ๊ธฐ n์ ์ ๊ณฑ์ ๋น๋กํ์ฌ ์๊ฐ๋ณต์ก๋๊ฐ ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. Big O ํ๊ธฐ๋ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๋น๊ตํ๊ฑฐ๋ ๊ฐ์ ํ๊ธฐ ์ํ ์ค์ํ ๋๊ตฌ์ ๋๋ค.
ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๋์ด๊ธฐ ์ํด์๋ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ค๊ณํ๋ ๊ฒ์ด ํต์ฌ์ ๋๋ค. ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ๋ค ์ค์์๋ ์๊ฐ๋ณต์ก๋์ ์์ ์ฌ์ฉ๋์ด ์ต์์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฅผ ์ํด์๋ ๋ฌธ์ ์ ์ฑ์ง๊ณผ ์กฐ๊ฑด์ ๋ถ์ํ๊ณ , ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ณ์ฐํ๋ ๊ฒ์ด ํ์ํฉ๋๋ค. ๋ค์ํ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ๊ธฐ๋ฒ์ ํ์ตํ๊ณ ์ต์ํด์ง์ผ๋ก์จ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ๋ง๋ค ์ ์์ต๋๋ค.
๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ํ
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ์ ํ ์ ํํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์ํฉ๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ๋ฐ์ดํฐ์ ์ ์ฅ ๋ฐฉ์๊ณผ ์ ๊ทผ ๋ฐฉ๋ฒ์ ๊ฒฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํ์ ์์ ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ์ด์ง ํ์ ํธ๋ฆฌ์ ๊ฐ์ ํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ฌ ํ์ ์๊ฐ์ ์ต์ํํ ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ์ ์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์น๊ธฐ ๋๋ฌธ์ ์ ์คํ๊ฒ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
๊ณ์ฐ ๋ณต์ก๋ ์ต์ ํ ๊ธฐ๋ฒ
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ค์ํ ๊ณ์ฐ ๋ณต์ก๋ ์ต์ ํ ๊ธฐ๋ฒ์ ํ์ฉํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฉ๋ชจ์ด์ ์ด์ (Memoization) ๊ธฐ๋ฒ์ ์ค๋ณต๋๋ ๊ณ์ฐ์ ๋ฐฉ์งํ์ฌ ์คํ ์๊ฐ์ ๋จ์ถ์ํค๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๋์ ํ๋ก๊ทธ๋๋ฐ(Dynamic Programming) ๊ธฐ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ์ฌ ์ค๋ณต ๊ณ์ฐ์ ํผํ๊ณ ์คํ ์๊ฐ์ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
์๊ณ ๋ฆฌ์ฆ์ ํจ์จ์ฑ์ ํฅ์์ํค๊ธฐ ์ํด์๋ Big O ํ๊ธฐ๋ฒ์ ์ดํดํ๊ณ , ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ์ ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ ํ, ๊ณ์ฐ ๋ณต์ก๋ ์ต์ ํ ๊ธฐ๋ฒ์ ํ์ฉํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ฌํ ๋ ธ๋ ฅ๋ค์ ํตํด ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ณ , ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ์ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
- ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌธ์ ํด๊ฒฐ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ์คํ ์๊ฐ์ ์ต์ํํ๊ณ , ํจ์จ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ์ ๋ํด ์์ธํ ์์๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋ฏธํ๋ฉฐ, ์์ ์ฌ์ฉ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ ๋ฑ์ ์์์ ์์ ์๋ฏธํฉ๋๋ค. ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ถํ์ํ ์๊ฐ๊ณผ ์์์ ๋ญ๋น๋ฅผ ์ต์ํํ ์ ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ์๋์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์๋ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, ์คํ ์๊ฐ์ด ๊ธด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ์คํ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ฌ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ, ์ค์ ํ๊ฒฝ์์ ์ ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์คํ ์๊ฐ์ ์ฆ๊ฐ์จ์ด ์์์ง๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ผ์ผ๋ง ๊ฐ๋ฅํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์ด ํฌ๊ณ ๋ณต์กํ ์์ ์ ๋ํด์๋ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์์ ๋๋ค.
๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ๊ณผ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ค ๋ฌธ์ ์ ๋ํด์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋์ง๋ฅผ ์๊ฒ ๋๋ฉด, ๋ฌธ์ ๋ฅผ ๋ ๊น๊ฒ ์ดํดํ๊ณ ๋ ์ฐฝ์์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๊ฐ๋ฐ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๋ ฅ๊ณผ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๋ฐ์ ์ํค๋ ๋ฐ์๋ ํฐ ๋์์ ์ค๋๋ค.
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ, ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์ธก๋ฉด์์ ์ค์ํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๊ณ ์คํ ์๊ฐ์ ์ต์ํํ ์ ์์ผ๋ฉฐ, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์ ๋๋นํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ถฉ๋ถํ ๊ณ ๋ ค๋ฅผ ํ์ฌ์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ํ๋ก๊ทธ๋๋ฐ๊ณผ ๋ฌธ์ ํด๊ฒฐ์์ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํฉ๋๋ค. ์ ํํ๊ณ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ ๊ฒ์ ์คํ ์๊ฐ์ ์ต์ํํ๊ณ , ์์์ ํจ์จ์ ์ผ๋ก ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ํต์ฌ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์์ฑ์ ๋ํด ์์ธํ ์์๋ณด๊ฒ ์ต๋๋ค.
1. ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋์ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์คํ ์๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์๋ฏธํ๋ฉฐ, ์์ ์ฌ์ฉ๋์ ์๊ณ ๋ฆฌ์ฆ์ด ์ฌ์ฉํ๋ ๋ฉ๋ชจ๋ฆฌ, ํ๋ก์ธ์ ๋ฑ์ ์์์ ์์ ์๋ฏธํฉ๋๋ค. ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ถํ์ํ ์๊ฐ๊ณผ ์์์ ๋ญ๋น๋ฅผ ์ต์ํํ ์ ์์ผ๋ฉฐ, ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ์๋์ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
2. ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ์๋ ์ง์ ์ ์ธ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒฝ์ฐ, ์คํ ์๊ฐ์ด ๊ธด ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๊ธฐ ์ด๋ ต๊ฑฐ๋ ์คํ ์์ฒด๊ฐ ๋ถ๊ฐ๋ฅํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํจ์จ์ ์ธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ์ฌ ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํจ์ผ๋ก์จ, ์ค์ ํ๊ฒฝ์์ ์ ์ฉํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ต๋๋ค.
3. ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์๋ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์ ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ ฅ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํจ์ ๋ฐ๋ผ ์ด๋ป๊ฒ ๋์ํ๋์ง๋ฅผ ์๋ฏธํฉ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ฎ์์๋ก ์ ๋ ฅ ํฌ๊ธฐ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์คํ ์๊ฐ์ ์ฆ๊ฐ์จ์ด ์์์ง๋ฏ๋ก, ์๊ณ ๋ฆฌ์ฆ์ด ์ค์ผ์ผ๋ง ๊ฐ๋ฅํ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ ์์คํ ์ด ํฐ ์์ ์ ๋ํด์๋ ํจ์จ์ ์ผ๋ก ๋์ํ ์ ์๋์ง๋ฅผ ๊ฒฐ์ ํ๋ ์์์ ๋๋ค.
4. ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ๊ณผ๋ ๊ด๋ จ์ด ์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ฌธ์ ๋ฅผ ๋ ์ฝ๊ณ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ์ด๋ค ๋ฌธ์ ์ ๋ํด์ ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผ ํ๋์ง๋ฅผ ์๊ฒ ๋๋ฉด, ๋ฌธ์ ๋ฅผ ๋ ๊น๊ฒ ์ดํดํ๊ณ ๋ ์ฐฝ์์ ์ผ๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ๊ฐ๋ฐ์์ ํ๋ก๊ทธ๋๋ฐ ์ค๋ ฅ๊ณผ ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ์ ๋ฐ์ ์ํค๋ ๋ฐ์๋ ํฐ ๋์์ ์ค๋๋ค.
์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์คํ ์๊ฐ๊ณผ ์์ ์ฌ์ฉ๋, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ, ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ, ๋ฌธ์ ํด๊ฒฐ ๋ฅ๋ ฅ ๋ฑ๊ณผ ๊ฐ์ ๋ค์ํ ์ธก๋ฉด์์ ์ค์ํฉ๋๋ค. ์ฌ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ๋ฉด ๋ฌธ์ ๋ฅผ ํจ์จ์ ์ผ๋ก ํด๊ฒฐํ๊ณ ์คํ ์๊ฐ์ ์ต์ํํ ์ ์์ผ๋ฉฐ, ๋์ฉ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์ ์ค์ผ์ผ๋ง ๊ฐ๋ฅ์ฑ์ ๋๋นํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๊ณ ๋ฆฌ์ฆ ์ ํ์ ์ถฉ๋ถํ ๊ณ ๋ ค๋ฅผ ํ์ฌ์ผ ํ๋ฉฐ, ์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ๊ณผ ์ฌ์ฉ์ ๊ฒฝํ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
5. ์๊ฐ๋ณต์ก๋ ๋ถ์์ ์์
์๊ฐ๋ณต์ก๋ ๋ถ์์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ ๋น๊ตํ๊ธฐ ์ํ ๋ฐฉ๋ฒ์ ๋๋ค. ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํ๋ ๊ณผ์ ์์ ์ฐ๋ฆฌ๋ ์ ๋ ฅ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ด ์ด๋ป๊ฒ ์ฆ๊ฐํ๋์ง๋ฅผ ํ์ ํ๊ฒ ๋ฉ๋๋ค. ์ด๋ฒ ์น์ ์์๋ ์๊ฐ๋ณต์ก๋ ๋ถ์์ ์ํ ์์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
1. ์์: ์ ํ ํ์ ์๊ณ ๋ฆฌ์ฆ
์ ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ฃผ์ด์ง ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก, ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ฐจ๋ก๋ก ๊ฒ์ํ๋ฉฐ ๊ฐ์ ์ฐพ์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
def linear_search(arr, target):
for num in arr:
if num == target:
return True
return False
์์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ๋ณต๋ฌธ์ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋น๋กํ์ฌ ์คํ๋ฉ๋๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ N์ผ ๊ฒฝ์ฐ, ๋ฐ๋ณต๋ฌธ์ N๋ฒ ์คํ๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ ํ ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ O(N)์ ๋๋ค. ์ด๋ ์ ๋ ฅ ํฌ๊ธฐ(N)์ ์ ๋น๋กํ์ฌ ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
2. ์์: ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ
์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ค๊ฐ๊ฐ์ ์ ํํ์ฌ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ๋น๊ตํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค. ๋ฐฐ์ด์ ์ค๊ฐ๊ฐ๊ณผ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ๋น๊ตํ์ฌ ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ด ์ค๊ฐ๊ฐ๋ณด๋ค ์์์ง ํฐ์ง์ ๋ฐ๋ผ ํ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ์ค์ฌ๊ฐ๋ฉฐ ๊ฐ์ ์ฐพ์ต๋๋ค. ์ด ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๋ถ์ํด๋ณด๊ฒ ์ต๋๋ค.
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
guess = arr[mid]
if guess == target:
return True
elif guess < target:
low = mid + 1
else:
high = mid - 1
return False
์์ ์๊ณ ๋ฆฌ์ฆ์์ ๋ฐ๋ณต๋ฌธ์ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ์คํ๋ฉ๋๋ค. ๋ง์ฝ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ N์ผ ๊ฒฝ์ฐ, ์ด์ง ํ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต๋ฌธ์ logN๋ฒ ์คํํ๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๋ O(logN)์ ๋๋ค. ์ด๋ ์ ๋ ฅ ํฌ๊ธฐ(N)์ ๋ํ์ฌ ๋ก๊ทธ์ ๋น๋ก๋ก ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์๊ฐ๋ณต์ก๋ ๋ถ์์ ์๊ณ ๋ฆฌ์ฆ์ ์คํ ์๊ฐ์ ์์ธกํ๊ณ ๋น๊ตํ๋ ๋ฐ์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ฐ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฑ๋ฅ์ ํ๊ฐํ๊ณ , ๋ฌธ์ ํด๊ฒฐ์ ์ต์ ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ์ ์์ต๋๋ค.
- ์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์ ๋น๊ต
์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์์ ๋ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ๊ฐ์ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ์๊ฐ๋ณต์ก๋์ ์คํ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฒ ์น์ ์์๋ ์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
์ ํ ๊ฒ์
์ ํ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ด์ ์ฒ์๋ถํฐ ๋๊น์ง ์ฐจ๋ก๋ก ๊ฐ์ ๋น๊ตํ์ฌ ์ฐพ๋ ๊ฐ์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ฐฐ์ด์ด ์ ๋ ฌ๋์ด ์์ง ์์ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค. ์๋๋ ์ ํ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def linear_search(arr, target):
for i in range(len(arr)):
if arr[i] == target:
return i
return -1
์ ํ ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋น๋กํ์ฌ ๊ฒ์์ ์ํํ๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๋ O(N)์ ๋๋ค. ์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ์ ํ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ๋๊น์ง ๊ฐ์ ์ฐพ์ง ๋ชปํ๊ณ ๋ชจ๋ ์์๋ฅผ ํ์ํด์ผ ํ๋ฏ๋ก, ์ต์ ์ ์๊ฐ๋ณต์ก๋๋ O(N)์ ๋๋ค.
์ด์ง ๊ฒ์
์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํ์์ ์ํํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด์ง ๊ฒ์์ ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋์ด ์ฐพ๊ณ ์ ํ๋ ๊ฐ์ ๋น๊ตํ์ฌ ํ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ์ค์ด๋ฉด์ ๊ฐ์ ์ฐพ์๊ฐ๋๋ค. ์๋๋ ์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def binary_search(arr, target):
low = 0
high = len(arr) - 1
while low <= high:
mid = (low + high) // 2
guess = arr[mid]
if guess == target:
return mid
elif guess < target:
low = mid + 1
else:
high = mid - 1
return -1
์ด์ง ๊ฒ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ํ์์ ์ํํ๋ฉฐ, ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋์ด ๊ฐ๋ฉฐ ๊ฐ์ ์ฐพ์๊ฐ๋๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋น๋กํ์ฌ ๋ฐ๋ณต๋ฌธ์ logN๋ฒ ์คํํ๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๋ O(logN)์ ๋๋ค. ์ด๋ ์ ๋ ฅ ํฌ๊ธฐ(N)์ ๋ํ์ฌ ๋ก๊ทธ์ ๋น๋ก๋ก ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ์ ํ ๊ฒ์์ ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์์๋ ๋์ํ ์ ์์ง๋ง, ๋ฐฐ์ด์ ๊ธธ์ด์ ๋ฐ๋ผ ์ ํ์ ์ธ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก ํฐ ๋ฐฐ์ด์ ๋ํด์๋ ๋นํจ์จ์ ์ ๋๋ค. ์ด์ง ๊ฒ์์ ์ ๋ ฌ๋ ๋ฐฐ์ด์์๋ง ๋์ํ ์ ์์ง๋ง, ์๊ฐ๋ณต์ก๋๊ฐ logN์ผ๋ก ๋งค์ฐ ํจ์จ์ ์ ๋๋ค. ๋ฐ๋ผ์ ์ ํ ๊ฒ์๊ณผ ์ด์ง ๊ฒ์์ ์ฃผ์ด์ง ์ํฉ์ ๋ฐ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ ํฉ๋๋ค.
- ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ ๋น๊ต
๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ์ ๋ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ๊ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ์๊ฐ๋ณต์ก๋์ ์คํ ๋ฐฉ์์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฒ ์น์ ์์๋ ๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
๋ฒ๋ธ ์ ๋ ฌ
๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ธ์ ํ ๋ ์์๋ฅผ ๋น๊ตํ๊ณ , ํ์์ ๋ฐ๋ผ ๊ฐ์ ๊ตํํ๋ ๋ฐฉ์์ผ๋ก ๋ฐฐ์ด์ ์ ๋ ฌํฉ๋๋ค. ๊ฐ์ฅ ํฐ ๊ฐ์ ๋ฐฐ์ด์ ๋์ผ๋ก ์์ฐจ์ ์ผ๋ก ์ด๋์ํค๋ ๊ฒ์ด ์ฃผ์ํ ์์ด๋์ด์ ๋๋ค. ์๋๋ ๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def bubble_sort(arr):
n = len(arr)
for i in range(n):
for j in range(n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
๋ฒ๋ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ฐฐ์ด์ ๊ธธ์ด์ ๋น๋กํ์ฌ ์ ๋ ฌ์ ์ํํ๋ฏ๋ก, ์๊ฐ๋ณต์ก๋๋ O(N^2)์ ๋๋ค. ์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์คํ ์๊ฐ์ด ์ ๊ณฑ์ ์ผ๋ก ์ฆ๊ฐํ๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ N์ผ ๋ N๋ฒ์ ํจ์ค๊ฐ ํ์ํ๋ฏ๋ก, ์ต์ ์ ์๊ฐ๋ณต์ก๋ ์ญ์ O(N^2)์ ๋๋ค.
ํต ์ ๋ ฌ
ํต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ถํ ์ ๋ณต(Divide and Conquer) ๋ฐฉ์์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์ ๋ ฌํฉ๋๋ค. ๋ฐฐ์ด์ ๋ถํ ํ์ฌ ๊ธฐ์ค๊ฐ(pivot)์ ๊ธฐ์ค์ผ๋ก ์์ ๊ฐ์ ์ผ์ชฝ์ผ๋ก, ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋์ํต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ถ๋ถ ๋ฐฐ์ด์ ๋ํด ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ์ ์ํํฉ๋๋ค. ์๋๋ ํต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def quick_sort(arr):
if len(arr) <= 1:
return arr
pivot = arr[len(arr) // 2]
left = [x for x in arr if x < pivot]
mid = [x for x in arr if x == pivot]
right = [x for x in arr if x > pivot]
return quick_sort(left) + mid + quick_sort(right)
ํต ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ถํ ๋จ๊ณ์์ ๋ฐฐ์ด์ ๋ถํ ํ๊ณ , ์ ๋ณต ๋จ๊ณ์์ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌ์ ์ํํฉ๋๋ค. ๋ฐฐ์ด์ ๊ธธ์ด์ ๋น๋กํ์ฌ ์ ๋ ฌ์ ์ํํ๋ฏ๋ก, ํ๊ท ์ ์ธ ์๊ฐ๋ณต์ก๋๋ O(N logN)์ ๋๋ค. ์ด๋ ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๋ํ์ฌ ๋ก๊ทธ์ ๋น๋ก๋ก ์คํ ์๊ฐ์ด ์ฆ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ต์ ์ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ด ์ด๋ฏธ ์ ๋ ฌ๋์ด ์๋ ๊ฒฝ์ฐ์๋ ๋ถํ ์ด ์ ๋๋ก ์ด๋ฃจ์ด์ง์ง ์์ O(N^2)์ ์๊ฐ๋ณต์ก๋๊ฐ ๋ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ ํ๊ท ์๊ฐ๋ณต์ก๋์ธ O(N logN)๋ฅผ ๊ฐ์ง๋๋ค.
๋ฒ๋ธ ์ ๋ ฌ๊ณผ ํต ์ ๋ ฌ์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋ฒ๋ธ ์ ๋ ฌ์ ๊ตฌํ์ด ๊ฐ๋จํ๊ณ ์ดํดํ๊ธฐ ์ฝ์ง๋ง, ์๊ฐ๋ณต์ก๋๊ฐ ํฌ๊ธฐ์ ์ ๊ณฑ์ ์ผ๋ก ์ฆ๊ฐํ์ฌ ๋นํจ์จ์ ์ ๋๋ค. ํต ์ ๋ ฌ์ ํ๊ท ์ ์ผ๋ก ๋งค์ฐ ํจ์จ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด์ง๋ง, ์ต์ ์ ๊ฒฝ์ฐ์๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํ ๋๋ ์ฌ์ฉํ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ํน์ฑ๊ณผ ํฌ๊ธฐ๋ฅผ ๊ณ ๋ คํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ ํฉ๋๋ค.
- ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ ๋น๊ต
๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๋ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฒ ์น์ ์์๋ ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
๋์ ๊ณํ๋ฒ
๋์ ๊ณํ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ค๋ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์์ ํ์ ๋ฌธ์ ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋๋ค. ์ด๋ ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๋ค์ด ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ์๋๋ ๋์ ๊ณํ๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def fibonacci(n):
if n <= 1:
return n
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
๋์ ๊ณํ๋ฒ์ ํ์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ๋์ผํ ํ์ ๋ฌธ์ ๊ฐ ๋ฐ๋ณตํด์ ๊ณ์ฐ๋๋ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ฐ๋ณต์ก๋๋ ํ์ ๋ฌธ์ ์ ๊ฐ์์ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ฐ์ ๋น๋กํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
๋ถํ ์ ๋ณต๋ฒ
๋ถํ ์ ๋ณต๋ฒ์ ๋ฌธ์ ๋ฅผ ๋๋์ด ํด๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก, ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค ๊ฐ๊ฐ์ ํด๊ฒฐํ๊ณ ์ด๋ฅผ ๊ฒฐํฉํ์ฌ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐฉ์์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์๋๋ ๋ถํ ์ ๋ณต๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
๋ถํ ์ ๋ณต๋ฒ์ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค, ๊ฐ๊ฐ์ ํด๊ฒฐํ๊ณ ์ด๋ฅผ ๊ฒฐํฉํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์, ์ฌ๊ท ํจ์ ํธ์ถ์ด ๋ฐ๋ณต๋์ด์ผ ํฉ๋๋ค. ํ์ง๋ง ์ผ๋ฐ์ ์ผ๋ก ํ์ ๋ฌธ์ ์ ๊ฐ์๋ ๋ก๊ทธ์ ๋น๋ก๋ก ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ์๊ฐ๋ณต์ก๋๋ O(N logN)์ ๋๋ค.
๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋์ ๊ณํ๋ฒ์ ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฉํ์ง๋ง, ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๋ถํ ์ ๋ณต๋ฒ์ ํ์ ๋ฌธ์ ๋ฅผ ๋ถํ ํ์ฌ ํด๊ฒฐํ ์ ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๊ฐ์ง์ง๋ง, ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋์ ๊ณํ๋ฒ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๊ณ ์ ํ๋ ๋ฌธ์ ์ ์ ๋ ฅ์ ํน์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ ๊ณํ๋ฒ ๋๋ ๋ถํ ์ ๋ณต๋ฒ์ ์ ํํด์ผ ํฉ๋๋ค.
- ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ ๋น๊ต
๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๋ ๊ฐ์ง ์๋ก ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๊ฐ๊ฐ์ ์๊ณ ๋ฆฌ์ฆ์ ๋ค๋ฅธ ์ฌ์ฉ ๋ฐฉ๋ฒ๊ณผ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๋ฒ ์น์ ์์๋ ๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๋น๊ตํด๋ณด๊ฒ ์ต๋๋ค.
๋์ ๊ณํ๋ฒ
๋์ ๊ณํ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ค๋ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์ด๋ ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๋ค์ด ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ๋์ ๊ณํ๋ฒ์ ์์ ํ์ ๋ฌธ์ ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋๋ค.
์๋ฅผ ๋ค์ด, ํผ๋ณด๋์น ์์ด์ ๊ณ์ฐํ๋ ๋ฌธ์ ๋ฅผ ๋์ ๊ณํ๋ฒ์ผ๋ก ํด๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ ํผ๋ณด๋์น ์์ด์ ๊ณ์ฐํ๋ ๋์ ๊ณํ๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def fibonacci(n):
if n <= 1:
return n
dp = [0] * (n + 1)
dp[1] = 1
for i in range(2, n + 1):
dp[i] = dp[i - 1] + dp[i - 2]
return dp[n]
์์ ์ฝ๋์์ dp
๋ฆฌ์คํธ๋ ์์ ํ์ ๋ฌธ์ ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๋ฆฌ์คํธ์
๋๋ค. ์ด๋ฅผ ํ์ฉํ์ฌ ๋ฐ๋ณต์ ์ผ๋ก ํผ๋ณด๋์น ์๋ฅผ ๊ณ์ฐํฉ๋๋ค. ๋์ ๊ณํ๋ฒ์ ์์ ํ์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ ํ์ฉํ๊ธฐ ๋๋ฌธ์, ๋์ผํ ํ์ ๋ฌธ์ ๊ฐ ๋ฐ๋ณตํด์ ๊ณ์ฐ๋๋ ๊ฒฝ์ฐ์๋ ํจ์จ์ ์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค. ์๊ฐ๋ณต์ก๋๋ ํ์ ๋ฌธ์ ์ ๊ฐ์์ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ฐ์ ๋น๋กํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค.
๋ถํ ์ ๋ณต๋ฒ
๋ถํ ์ ๋ณต๋ฒ์ ๋ฌธ์ ๋ฅผ ๋๋์ด ํด๊ฒฐํ๋ ๋ฐฉ์์ผ๋ก, ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค ๊ฐ๊ฐ์ ํด๊ฒฐํ๊ณ ์ด๋ฅผ ๊ฒฐํฉํ์ฌ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐฉ์์ ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฌ๊ท์ ์ธ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๋ฌธ์ ๋ฅผ ๋ถํ ์ ๋ณต๋ฒ์ผ๋ก ํด๊ฒฐํด๋ณด๊ฒ ์ต๋๋ค. ๋ค์์ ๋ณํฉ ์ ๋ ฌ(merge sort) ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ์ ๋ ฌํ๋ ๋ถํ ์ ๋ณต๋ฒ ์๊ณ ๋ฆฌ์ฆ์ ์์์ ๋๋ค.
def merge_sort(arr):
if len(arr) <= 1:
return arr
mid = len(arr) // 2
left = merge_sort(arr[:mid])
right = merge_sort(arr[mid:])
return merge(left, right)
def merge(left, right):
result = []
i, j = 0, 0
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
result.extend(left[i:])
result.extend(right[j:])
return result
์์ ์ฝ๋์์ merge_sort
ํจ์๋ ๋ฐฐ์ด์ ๋ฐ์ผ๋ก ๋๋ ๋ค, ๊ฐ๊ฐ์ ์ฌ๊ท์ ์ผ๋ก ์ ๋ ฌํ ํ ๋ณํฉํฉ๋๋ค. merge
ํจ์๋ ๋ ๊ฐ์ ์ ๋ ฌ๋ ๋ฐฐ์ด์ ํ๋๋ก ๋ณํฉํ๋ ์ญํ ์ ์ํํฉ๋๋ค. ๋ถํ ์ ๋ณต๋ฒ์ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํ์ฌ ํด๊ฒฐํ ์ ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๊ฐ์ง์ง๋ง, ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋์ ๊ณํ๋ฒ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์์ํ ์ ์์ต๋๋ค. ์๊ฐ๋ณต์ก๋๋ ํ์ ๋ฌธ์ ์ ๊ฐ์์ ๋น๋กํ๋ฏ๋ก, ์ผ๋ฐ์ ์ผ๋ก O(N logN)์
๋๋ค.
๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ต๋๋ค. ๋์ ๊ณํ๋ฒ์ ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฉํ์ง๋ง, ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค. ๋ถํ ์ ๋ณต๋ฒ์ ํ์ ๋ฌธ์ ๋ฅผ ๋ถํ ํ์ฌ ํด๊ฒฐํ ์ ์๊ณ , ์ผ๋ฐ์ ์ผ๋ก ์ข์ ์ฑ๋ฅ์ ๊ฐ์ง์ง๋ง, ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๋ฅผ ๋ฐ๋ณต์ ์ผ๋ก ํด๊ฒฐํ๊ธฐ ๋๋ฌธ์ ๋์ ๊ณํ๋ฒ๋ณด๋ค ๋ ๋ง์ ์๊ฐ์ ์์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํ๊ณ ์ ํ๋ ๋ฌธ์ ์ ์ ๋ ฅ์ ํน์ฑ, ๊ทธ๋ฆฌ๊ณ ์ ์ฝ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋์ ๊ณํ๋ฒ ๋๋ ๋ถํ ์ ๋ณต๋ฒ์ ์ ํํด์ผ ํฉ๋๋ค.
- ์๊ณ ๋ฆฌ์ฆ ์๊ฐ๋ณต์ก๋์ ๋ํ ๊ธ ์์ฑํ๊ธฐ
๋์ ๊ณํ๋ฒ
๋์ ๊ณํ๋ฒ์ ํฐ ๋ฌธ์ ๋ฅผ ์์ ํ์ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ค๋ ์๋ฆฌ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ๋์ ๊ณํ๋ฒ์ ์์ ํ์ ๋ฌธ์ ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ๊ณ , ์ด๋ฅผ ํ์ฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ์์ ๋๋ค. ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ์๋ ๊ฒฝ์ฐ์ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋ฉ๋๋ค. ๋์ ๊ณํ๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ์์ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ด๊ธฐ๊ฐ์ ์ค์ ํฉ๋๋ค.
- ํ์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํ ๋ฐฐ์ด์ ์์ฑํฉ๋๋ค.
- ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ์ฌ ์์ ํ์ ๋ฌธ์ ๋ถํฐ ํฐ ๋ฌธ์ ๊น์ง ์์ฐจ์ ์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
- ํ์ ๋ฌธ์ ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์ด์ ์ ์ฅํ๊ณ ํ์ฉํ์ฌ ํฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
๋์ ๊ณํ๋ฒ์ ํ์ ๋ฌธ์ ์ ๊ฐ์์ ํ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ฐ์ ๋น๋กํ๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ฏ๋ก ์ผ๋ฐ์ ์ผ๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ํ์ง๋ง ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ์ ๊ฐ์๊ฐ ์ ๊ณ ์ฌ๊ท์ ์ธ ํธ์ถ์ด ํ์ํ์ง ์์ ๊ฒฝ์ฐ์๋ O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์๋ ์์ต๋๋ค.
๋ถํ ์ ๋ณต๋ฒ
๋ถํ ์ ๋ณต๋ฒ์ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํ ๋ค ๊ฐ๊ฐ์ ํด๊ฒฐํ๊ณ ์ด๋ฅผ ๊ฒฐํฉํ์ฌ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ๋ฐฉ์์ ๋๋ค. ๋ถํ ์ ๋ณต๋ฒ์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋ถํ ํฉ๋๋ค.
- ๊ฐ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ๋ฅผ ์ฌ๊ท์ ์ผ๋ก ํด๊ฒฐํฉ๋๋ค.
- ๊ฐ๊ฐ์ ๋ถ๋ถ ๋ฌธ์ ์ ํด๊ฒฐ ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํฉํ์ฌ ์ต์ข ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
๋ถํ ์ ๋ณต๋ฒ์ ์ฌ๊ท์ ์ธ ํธ์ถ์ ์ฌ์ฉํ๋ฉฐ, ํ์ ๋ฌธ์ ์ ๊ฐ์๊ฐ ๋ก๊ทธ์ ๋น๋ก๋ก ์ค์ด๋ค๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ผ๋ก O(N logN)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋๋ค. ํ์ง๋ง ํ์ ๋ฌธ์ ๋ฅผ ๋ถํ ํ์ฌ ํด๊ฒฐํ๋ ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ ์ฐ์ฐ์ด ํ์ํ ๊ฒฝ์ฐ์๋ ๋ ํฐ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค.
๋์ ๊ณํ๋ฒ๊ณผ ๋ถํ ์ ๋ณต๋ฒ์ ๊ฐ๊ฐ์ ์ฅ๋จ์ ์ด ์์ผ๋ฉฐ, ํ๊ณ ์ ํ๋ ๋ฌธ์ ์ ํน์ฑ๊ณผ ์ ๋ ฅ์ ํฌ๊ธฐ, ๊ทธ๋ฆฌ๊ณ ์ ์ฝ ์กฐ๊ฑด์ ๊ณ ๋ คํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ ํฉ๋๋ค. ๋์ ๊ณํ๋ฒ์ ์ค๋ณต๋๋ ํ์ ๋ฌธ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ์ ์ ์ฉํ๋ฉฐ, ๋ถํ ์ ๋ณต๋ฒ์ ํ์ ๋ฌธ์ ๋ฅผ ๋ถํ ํ์ฌ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ์ ์ข์ ์ฑ๋ฅ์ ๋ณด์ ๋๋ค. ๋ฐ๋ผ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ์๊ณ ๋ฆฌ์ฆ์ด ์ ์ ํ์ง๋ฅผ ํ๋จํ์ฌ ์ ํํด์ผ ํฉ๋๋ค.
๋๊ธ