โ
1. ์ ๋ ฌ ๊ธฐ๋ณธ ๊ฐ๋
(1) ์ ๋ ฌ ์ด๋?
์ ๋ ฌ ์ํ ์์ ์ ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์ ์ฅ๋์ด ์๋์ง์ ๋ฐ๋ผ ๋ด๋ถ ์ ๋ ฌ, ์ธ๋ถ ์ ๋ ฌ ๋ก ๋๋จ.
๋ด๋ถ ์ ๋ ฌ : ์ฃผ๊ธฐ์ต์ฅ์น์ ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ํ ์ ๋ ฌ ํ๋ ๋ฐฉ์
์ธ๋ถ ์ ๋ ฌ : ๋ณด์กฐ๊ธฐ์ต์ฅ์น์ ์ ์ฒด ๋ฐ์ดํฐ ์ ์ฅ ํ ์ผ๋ถ ๋ฐ์ดํฐ๋ง ์ฃผ๊ธฐ์ต์ฅ์น๋ก ์ฎ๊ฒจ์ ์ ๋ ฌํ๋ ๋ฐฉ์
(2) ๋ด๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
๋ด๋ถ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ ฌ ๋ฐฉ์์ ๋ฐ๋ผ ๋น๊ต ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ, ๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ผ๋ก ๋๋จ.
๋น๊ต ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ : ๋ ๋ฐ์ดํฐ์ ๊ฐ์ ์ง์ ๋น๊ตํ์ฌ ์์น๋ฅผ ๊ตํํ๋ ๋ฐฉ์์ด๋ฉฐ, ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉ๋จ. ( ์์๊ฐ์ ๋น๊ต )
** ๋น๊ต ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ: ํค๊ฐ์ ๋น๊ต ํ์๊ฐ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ์ ์ฒ๋๊ฐ ๋จ. **
๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ : ๊ฐ๋ค ๊ฐ์ ์ง์ ์ ์ธ ๋น๊ต๋ฅผ ํ์ง ์๊ณ , ๋ฐ์ดํฐ์ ํน์ฑ(๊ฐ์ ๋ฒ์, ์๋ฆฟ์ ๋ฑ)์ ์ด์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ํน์ ๋ฒํท์ ๋ถ์ฐ์ํจ ๋ค ์ ๋ ฌํ๋ ๋ฐฉ์์.
** ์ฝ๊ฒ ๋งํด, ๋ฐ์ดํฐ ์์๊ฐ์ ๋น๊ต๊ฐ ์๋ ๋ฏธ๋ฆฌ ์ ์๋ ๊ท์น์ ๋ฐ๋ผ(์กฐ๊ฑด) ์ ๋์ ์ธ ์์น๋ฅผ ์ฐพ์ ์ ๋ ฌ์ด ๋๋ ๋ฐฉ์์. **
** ๋ฐ์ดํฐ ๋ถํฌ ๊ธฐ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ : ๋ฐ์ดํฐ์ ์ด๋ ํ์ **
(3) ์ ๋ ฌ ๊ด๋ จ ๊ฐ๋
- ์์ ์ ์ ๋ ฌ
์์ ์ ์ ๋ ฌ : "๋์ผํ ๊ฐ " ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ ํ ๋, ์ ๋ ฌ ์ ๊ณผ ํ์๋ ์๋์ ์์น๊ฐ ๊ทธ๋๋ก ์ ์ง๋๋ ์ ๋ ฌ์ ์๋ฏธํจ.
** ๋ํ์ ์ผ๋ก ์ฝ์
์ ๋ ฌ, ๊ฑฐํ์ ๋ ฌ, ๋ณํฉ์ ๋ ฌ์ด ์์ผ๋ฉฐ, ๋ฐ๋ฉด ๋ถ์์ ์ ๋ ฌ๋ก๋ ์ ํ์ ๋ ฌ, ํต์ ๋ ฌ, ํ์ ๋ ฌ์ด ์์. **
(4) ์ ๋ ฌ ๊ด๋ จ ๊ฐ๋
- ์ ์๋ฆฌ ์ ๋ ฌ
์ ์๋ฆฌ ์ ๋ ฌ : ์ฃผ์ด์ง ๋ฐ์ดํฐ ๋๋ฏธ ์์์ ์์ค๋ค์ ์์น๋ง ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ ๋ ฌ์ ํ๋ ๋ฐฉ์์ด๋ฉฐ, ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ถ๊ฐ์ ์ผ๋ก ๊ฑฐ์ ์ฌ์ฉ์ ํ์ง ์์.
** ๋ํ์ ์ผ๋ก ๋ฒ๋ธ์ ๋ ฌ, ์ ํ์ ๋ ฌ, ์ฝ์
์ ๋ ฌ, ํต์ ๋ ฌ, ํ์ ๋ ฌ์ด ์์. **
(5) ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ณธ ๊ฐ์
ํด๋น ๊ฐ์ ์ ํตํด์ ์์ ๋ฐฐ์ธ ์ ๋ ฌ ๋ฐฉ์์ ์ค๋ช
ํ ์์ ์.
โ
2. ์ ํ ์ ๋ ฌ
(1) ์ ํ ์ ๋ ฌ ์ด๋?
์ ํ ์ ๋ ฌ : ์
๋ ฅ ๋ฐฐ์ด์์ ๊ฐ์ฅ ์์ ๊ฐ๋ถํฐ ์์๋๋ก ์ ํํด์ ์ ๋ ฌํ๋ ๋ฐฉ์์ด๋ค.
** ์ถ๊ฐ์ ์ธ ๋ฐฐ์ด์ ์ฌ์ฉํ์ง ์๊ณ ์
๋ ฅ ๋ฐฐ์ด ๋ด๋ถ์์ ๊ฐ์ฅ ์์๊ฐ์ ์ฐพ์์ ๋งจ ์์ผ๋ก ์ฎ๊ธฐ๋ ๋ฐฉ์์ด๋ผ๊ณ ๋ณด๋ฉด ๋จ. **
(2) ์ ํ ์ ๋ ฌ - ์ฒ๋ฆฌ ๊ณผ์ (flow chart)
(1) i < n - 1 : ๋ฐ์ดํฐ์ ๊ฐ์๋งํผ ๋ฐ๋ณต ( ์ฆ, ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํ๋ค๊ณ ๋ณด๋ฉด๋๊ณ n ์ ์์์ ๊ฐ์ n - 1 ์ ์ธ๋ฑ์ค๋ฅผ ์๋ฏธ )
(2) ๋ฏธ์ ๋ ฌ ๋ฐฐ์ด์ ์ํํ๋ฉด์ ์ต์๊ฐ์ ์ฐพ์.
(3) ๋ฐฐ์ด์ ์ธ๋ฑ์ค ์ ์ผ ์ฒซ ๋ฒ์งธ ์์์ ์ต์๊ฐ๊ณผ ์๋ฆฌ๋ฅผ ๋ฐ๊ฟ.
(4 ) ์ฒซ ๋ฒ์งธ ์ํ๋ก ์ฒซ ์ธ๋ฑ์ค๋ ์ ์ผ ์ต์๊ฐ์ ๊ฐ์ง๋ ์ ๋ ฌ์ด ๋๊ฒ ๋จ.
(5) ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ ์ ๋ ฌ์ด ๋์ด์์ผ๋ฏ๋ก, ๋ค์ ์ธ๋ฑ์ค์ ์ต์๊ฐ์ ๋ ๋ฃ์ผ๋ฉฐ ํด๋น ๊ณผ์ ์ ๋ฐ๋ณต
์ฝ๋๋ก์จ ๊ตฌํ์ 2์ค for ๋ฌธ ์ ํ์ฉ์ ํจ.
๋ด๋ถ for๋ฌธ : ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ต์๊ฐ์ ์ฐพ๊ณ ์ ๋ ฌ ๋ ์ ์ผ ์์ ๊ฐ์ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ ์์น๋ฅผ ๊ตํ์ ํด์ค.
์ฆ, ๋ด๋ถ for ๋ฌธ์ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉฐ ์ต์๊ฐ์ ํ๋๋ง ์ฐพ์์ ์ ๋ ฌ์ ํด์ฃผ๋ ํ๋์ ๋จ๊ณ๋ผ๊ณ ๋ณด๋ฉด ๋จ.
์ธ๋ถ for๋ฌธ : ๋ด๋ถ for ๋ฌธ๋ง ์์ผ๋ฉด ์ต์๊ฐ ํ๋๋ง ์ ๋ ฌ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ธ๋ฑ์ค ๋งํผ ๋๋ ค์ ๋ชจ๋ ์ ๋ ฌ์ ์ํํด์ค.
** ์ฆ, ์ฝ๋๋ฅผ ๋ณด๋ฉด ๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง๋ ๋ฐ์ดํฐ์ ์์น์ธ j ๋ฅผ min ๋ณ์์ ๋ด์์ผ๋ก์จ ์์น๋ฅผ ๊ธฐ์ตํด๋์๋ค๊ฐ ๋ฐ๋ณต๋ฌธ ํ ์ฌ์ดํด์ด ์ข
๋ฃ๋๋ ์์ ์ ํด๋น ์ต์๊ฐ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ํตํด ์ ์ผ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค ์์์ ๊ตํ์ ์ํด. **
์ฆ, ์ ํ ์ ๋ ฌ์ ๋จ๊ณ๋ณ๋ก ์ต์๊ฐ์ ์ฐพ์์ ๊ตํ์ ํด์ฃผ๊ณ ๊ตํ ๋ ์ต์๊ฐ์ ๊ฑด๋๋ฆฌ์ง ์๊ณ ๋ค์ ์ธ๋ฑ์ค๋ค์์ ์ฐพ๋ ๊ฒ์.
** 30๊ณผ 20 = 20, 20๊ณผ 40 = 20, 20๊ณผ 35 = 5, 5์ 10, 45, 50, 25, 15 = 5 ์ด๋ฐ์์ผ๋ก ์งํ๋จ **
(3) ์ ํ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
์
๋ ฅ ๋ฐ์ดํฐ n : ์ ๋ ฌ ํ ๋์์ธ ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ค์ ๊ฐ์ ( ์ฆ, ์ธ๋ฑ์ค )
์๊ฐ ๋ณต์ก๋ : 2์ค for ๋ฌธ์ ํ์ฉํ๊ธฐ์ ์์๊ฐ์ ์ ์ธํ n^2 ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง.
์
๋ ฅ ๋ฐ์ดํฐ์ ์ํ(๋ฐฐ์ด ์์๋ค์ ๋น์ ๋ ฌ ๋ชจ์ต)์ ์๊ด์์ด ํญ์ ๋์ผํ ์ฑ๋ฅ์ธ O(n^2)์ ๊ฐ์ง.
** ์ฆ,์
๋ ฅ ๋ฐ์ดํฐ์ธ ๋น์ ๋ ฌ ๋ฐฐ์ด์ ์์์ ๋ํด์ ๋ฏผ๊ฐํ์ง ์๋ค๋ ์๋ฏธ์. **
์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์
๋ ฅ ๋ฐฐ์ด A[] ์ด์ธ์ ์์ ๊ฐ ์ ์ฅ ๊ณต๊ฐ์ธ i, j, min, tmp ๋ง ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ ์.
๋ถ์์ ์ ๋ ฌ : ๋์ผํ ์์ ๊ฐ์ ๋ํด์๋ ์์น๋ฅผ ๋ฐ๊ฟ์ฃผ๋ ์ฐ์ฐ์ ํ๊ธฐ ๋๋ฌธ์ ๋ถ์์ ์ ๋ ฌ๋ก ๋ณผ ์ ์์.
โ
3. ๋ฒ๋ธ ์ ๋ ฌ
(1) ๋ฒ๋ธ ์ ๋ ฌ ์ด๋?
๋ฒ๋ธ ์ ๋ ฌ : ์ธ์ ํ ๋ชจ๋ ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐจ๋ก๋๋ก ๋น๊ต ํ ์กฐ๊ฑด(ํฌ๊ณ ์์)์ ๋ฐ๋ผ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ์ ๋ ฌ ๋ฐฉ์์.
์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ ์งํ : ๋ ๋ฐ์ดํฐ ๋น๊ต์ ์ค๋ฅธ์ชฝ ๋์ ํฐ ๊ฐ์ ์์น ์ํด.
์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ ์งํ : ๋ ๋ฐ์ดํฐ ๋น๊ต์ ์ผ์ชฝ ๋์ ์์ ๊ฐ์ ์์น ์ํด.
(2) ๋ฒ๋ธ ์ ๋ ฌ - ์ฒ๋ฆฌ ๊ณผ์
์ผ์ชฝ ๊ทธ๋ฆผ : ์ค๋ฅธ์ชฝ์ผ๋ก ๋น๊ต๋ฅผ ์์ํ๋ฉฐ, ๋ ํฐ ๊ฐ์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ ๋ ฌ
์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ : ์ผ์ชฝ์ผ๋ก ๋น๊ต๋ฅผ ์์ํ๋ฉฐ, ๋ ์์ ๊ฐ์ ์ผ์ชฝ์ผ๋ก ์ ๋ ฌ
์ธ๋ถ for๋ฌธ : ํด๋น ๋ฐฐ์ด์ ์์ ๊ฐ์์ธ ์ธ๋ฑ์ค ์๋งํผ ๋ฐ๋ณต์ ์์ผ์ค.
๋ด๋ถ for๋ฌธ : ๋ชจ๋ ์์๋ฅผ ์ํ ํ๋ฉฐ, ์ผ์ชฝ ๋ฐ์ดํฐ์ ์ค๋ฅธ์ชฝ ๋ฐ์ดํฐ ๋น๊ต ํ ์ ๋ ฌ์ ๋ฐ๋ณตํจ.
i < n - 1 : ๋ฐ๋ณต ์กฐ๊ฑด์์ n - 1 ๋ฒ ๋งํผ๋ง ๋๋๋ฐ ๊ทธ ์ด์ ๋, ์ซ์ 5๊ฐ๊ฐ ์๋ค๊ณ ๊ฐ์ ํ๋ฉด 4๊ฐ์ ์์น๋ฅผ ๋ค ์ฐพ์์ฃผ๋ฉด ์์ฐ์ค๋ฝ๊ฒ ๋ง์ง๋ง ํ๋์ ์์น๋ ์ ๋ ฌ์ด ๋ ์ํ์ด๋ฏ๋ก ๊ตณ์ด ํ ๋ฒ๋ ๋ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์.
์ค๋ฅธ์ชฝ์์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์
์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋ํ๋ฉฐ ์ ๋ ฌํ๋ ๋ฐฉ์
2์ค for ๋ฌธ ํ์ฉ : ๋จ๊ณ๋ณ๋ก ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋น๊ต ํ ์ ๋ ฌ์ ์งํํ๋ฉฐ, ๋จ๊ณ๋ง๋ค ๋น๊ต์
์ค๋ฅธ์ชฝ->์ผ์ชฝ : ๋จ๊ณ๋ณ๋ก ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ ๋น๊ต ํ ํฐ ๊ฐ๊ณผ ์์ ๊ฐ์ ๋น๊ต ํ ์๋ฆฌ๋ฅผ ๊ตํํด์ฃผ๋๋ฐ, ์ด๋ ์ค๋ฅธ์ชฝ์๋ ๋ ํฐ ๊ฐ์ด ๊ฐ๊ณ ๋น๊ต์์ ์ ์ค๋ฅธ์ชฝ ๊ฐ์ด ๋ ํฌ๋ค๋ฉด ๊ตํ์ ํ ํ์๊ฐ ์๊ธฐ์ ๋ค์ ์์์ ๋น๊ต๋ฅผ ํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํจ.
(3) ๋ฒ๋ธ ์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
๋ฐ๊นฅ์ชฝ ๋ฐ๋ณต๋ฌธ(i๋ฃจํ) : ์ ๋ ฌ์ ์ด ๋ช ๋ฒ ๋ฐ๋ณตํ ์ง ๊ฒฐ์ ํจ.
์์ชฝ ๋ฐ๋ณต๋ฌธ(j๋ฃจํ) : ์ค์ ๋ก ์ธ์ ํ ๋ ์ซ์๋ฅผ ๋น๊ตํ๊ณ ์๋ฆฌ๋ฅผ ๋ฐ๊พธ๋ ๊ณผ์ ์.
์๊ฐ ๋ณต์ก๋: 2์ค for๋ฌธ ํ์ฉ -> ์
๋ ฅ ๋ฐ์ดํฐ n ์ฆ๊ฐ์จ ์ต๊ณ ์ฐจํญ n^2 = O(n^2) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง.
์์ ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์ธ์ ํ ๋ ๋ฐ์ดํฐ๊ฐ ๋์ผํ ๊ฒฝ์ฐ์๋ ์์น ๊ตํ์ ํ์ง ์์ผ๋ฏ๋ก ์์ ์ ์ ๋ ฌ์ ์ํจ.
์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์
๋ ฅ ๋ฐฐ์ด A[] ์ด์ธ์ ์์ ๊ฐ์ ์ ์ฅ ๊ณต๊ฐ๋ง ํ์ํ๋ฏ๋ก ์ ์๋ฆฌ ์ ๋ ฌ๋ก ๋ณผ ์ ์์.
์ ํ ์ ๋ ฌ๋ณด๋ค ๋นํจ์จ์ : ์ ํ ์ ๋ ฌ์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ ์ ์ฒด๋ฅผ ํ์ผ๋ฉฐ ๊ฐ์ฅ ์์ ๊ฐ์ ๊ฐ์ง๋ ์ธ๋ฑ์ค์ ๋ฒํธ๋ฅผ ๋ณ์์ ์ ์ฅ ํด ๋ ์ํ๋ก ๋ฐ๋ณต๋ฌธ ํ ์ฌ์ดํด์ ๋๊ณ ๋ ๋ค ๋ง์ง๋ง์ ๋ฐฐ์ด์ ์ ์ผ ์ฒซ ๋ฒ์งธ ์์์ ์ต์๊ฐ ์ธ๋ฑ์ค ์์น ์์์ ์์น๋ฅผ ๊ตํํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ ์ฌ์ดํด์ ๋ฑ ํ ๋ฒ ์์น ๊ตํ ์ด ์ผ์ด๋จ.
ํ์ง๋ง, ๊ทธ์ ๋นํด ๋ฒ๋ธ ์ ๋ ฌ ์ ํ ์ฌ์ดํด ๋ด์์ ์ฌ๋ฌ ๋ฒ ์์๊ฐ ์์น๋ฅผ ๊ตํ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ ๊ตํ์ด ๋ง์ด ๋ฐ์ํจ.
(4) ๋ฒ๋ธ ์ ๋ ฌ - ๊ฐ์ ๋ ๋ฒ๋ธ ์ ๋ ฌ
์ฒ๋ฆฌ ๋จ๊ณ์ ์ : ๊ธฐ์กด ๋ฒ๋ธ ์ ๋ ฌ์ ๊ฒฝ์ฐ ์ด๋ฏธ ๋ชจ๋ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ ๋ฐ๋ณต๋ฌธ ํ์์ ๋ง๊ฒ ์ํ์ด ๋๋ค ๋ณด๋ ๋นํจ์จ์ ์.
์ธ์ ํ ๋ ๋ฐ์ดํฐ์ ๋น๊ต ํ์ : ๊ธฐ์กด ๋ฒ๋ธ ์ ๋ ฌ์ ๊ฒฝ์ฐ ์ธ์ ํ ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ณต๋ฌธ ํ์์ ๋ง๊ฒ ๋น๊ต๋ฅผ ํ๋ค ๋ณด๋, ์ด๋ฏธ ์ ๋ ฌ๋ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋ค๊ณ ํด๋ ๋ชจ๋ ๋ฐฐ์ด์ ์์๋ฅผ ํ์ธํ๋ ์์
์ ํ๊ฒ ๋๋ฏ๋ก ๋นํจ์จ์ ์.
**์ด๋ฌํ ๊ฐ์ ์ด ํ์ํ ๋ถ๋ถ์ด ์กด์ฌํจ. **
(n - 1) - i : ๋ฐ๋ณต ํ์์ - i ๋ฅผ ํ๋ ์ด์ ๋, ํ ๋ฐํด ๋ ๋๋ง๋ค ๋งจ ๋ค์ i๊ฐ๋ ์ด๋ฏธ ์๋ฒฝํ๊ฒ ์ ๋ ฌ์ด ๋ ์ํ์ด๋ฏ๋ก ๊ตณ์ด ๋ ๋น๊ตํ ํ์๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋จ๊ณ๋ณ ๋ฐ๋ณต๋ง๋ค i ๋งํผ ์ค๊ฒ ๋ง๋๋ ๊ฒ์.
Sorted = TRUE : TRUE ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ฅผ ์์ผ์ฃผ๋ฉฐ, ์๋ฆฌ๋ฐ๊ฟ์ด ๋ฐ์ํด FALSE์ธ ์ํ๋ก๋ง ๋๋ค๋ฉด ์ด์ํ๊ธฐ ๋๋ฌธ์.
Sorted = FALSE : ๋ฒ๋ธ ์ ๋ ฌ ๋ฐ์ดํฐ๊ฐ์ ๋น๊ต ์ค์ ์๋ฆฌ ๋ฐ๊ฟ์ด ์ผ์ด๋๋ฉด Sorted ์ํ๋ฅผ FALSE(๋ฏธ์ ๋ ฌ ์ํ)๋ก ๋ฐ๊ฟ.
if (Sorted == TRUE) break : ๋ฃจํ๋ฅผ ๋ค ๋์๋๋ฐ ์๋ฆฌ๊ฐ ๋จ ํ ๋ฒ๋ ์๋ฐ๋์๋ค๋ฉด ๊ทธ๊ฑด ์ด๋ฏธ ์๋ฒฝํ๊ฒ ์ ๋ ฌ์ด ๋์๋ค๋ ๊ฒ์ด๋ฏ๋ก, Sorted ์๋ TRUE๊ฐ ๋ ์ํ์์ ์ ์ ์์. ( ๋ ์ด์ ๋ฐ๋ณต์ ํ ํ์๊ฐ ์๊ธฐ์ break ๋จ. )
์๊ฐ ๋ณต์ก๋ : O(n^2) ์ด์ง๋ง, ์
๋ ฅ ๋ฐ์ดํฐ์ ์ํ์ ๋ฐ๋ผ์ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง.
์ฝ๊ฒ ๋งํด, ๋ฐ์ดํฐ๊ฐ ์ญ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฝ์ฐ ๋ชจ๋ ๋น๊ต๋ฅผ ๋ค ํ๊ณ ๋ ๋ค ์ข
๋ฃ๊ฐ ๋์ง๋ง, ์ํ๋ ์์๋ก ์ด๋ฏธ ์ ๋ ฌ์ด ๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ ๋ ๋ฒ๋ธ ์ ๋ ฌ ์กฐ๊ฑด์ ๋ฐ๋ผ ๋ฐ๋ณต์ด ๋ฐ๋ก ์ข
๋ฃ๊ฐ ๋ ์ ์์ ์ด๋ ์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋ O(n) ์ด ๋ ์ ์์.
โ
4. ์ฝ์
์ ๋ ฌ
(1) ์ฝ์
์ ๋ ฌ ์ด๋?
์ฝ์
์ ๋ ฌ : ์
๋ ฅ ๋ฐฐ์ด์ ์ ๋ ฌ ๋ถ๋ถ๊ณผ ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ผ๋ก ๊ตฌ๋ถํด์ ์ฒ๋ฆฌํ๋๋ฐ, ์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ฝ์์ ์
๋ ฅ ๋ฐฐ์ด์ ์ฝ์
ํจ.
(1) ์ ์ผ ์ฒซ ๋ฒ์งธ ์์๋ ์ ๋ ฌ ๋ถ๋ถ์ผ๋ก ๊ฐ์ฃผํ๋ค.
(2) ์ฒซ ๋ฒ์งธ ์์ ๋ค์ ์์๋ฅผ ์ผ์ชฝ ์ ๋ ฌ ๋ถ๋ถ๊ณผ ๋น๊ต ํ ์ฝ์
( ํ์ฌ๋ 5๋ฐ์ ์์ผ๋ 5์ ๋น๊ต ํ ์์ผ๋ ์์ผ๋ก 3 ์ฝ์
)
(3) ๋ค์ ๋น์ ๋ ฌ ๋ถ๋ถ ๋งจ ์ 8์ ์ ๋ ฌ ๋ถ๋ถ์ธ 3, 5๋ฅผ ๋น๊ต ํ๋๋ฐ ๋ ๋ณด๋ค ํฌ๊ธฐ ๋๋ฌธ์ ์ ์๋ฆฌ์ ์์.
(4) ํ์ฌ ์ํ๋ ์ ๋ ฌ ๋ถ๋ถ(3, 5, 8) / ๋น์ ๋ ฌ ๋ถ๋ถ(1, 2, 7) ์ด๋ ๊ฒ ๋์ด์์ผ๋ฉฐ, ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ์ ๋ ฌ ๋ฐฉ์์.
val = A[i] : ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ val ๋ณ์์ ํ ๋นํ๋ ์ฐ์ฐ์.
for(j=i; j > 0 && A[j-1] > val; j--) : i ์ ๊ฐ์ ํ์ฌ ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ A[j-1] ์ ํตํด์ ๋ฏธ์ ๋ ฌ์ ๋ง์ง๋ง ๋ถ๋ถ์ ๊ฐ์ ๋น๊ต ํ ์ ์์.
๋ํ, ๋ง์ฝ ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ ๋ง์ง๋ง ์ธ๋ฑ์ค ๋ถ๋ถ์ด ๋ ํฌ๋ค๋ฉด j-- ๋ฅผ ํตํด ๊ทธ ์ด์ ๋ฏธ์ ๋ ฌ ๋ถ๋ถ ์ธ๋ฑ์ค๋ฅผ ๋น๊ต ํ ์ ์์.
A[j] = A[j-1] : ์ ๋ ฌ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ ์ ์ผ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ก ์ด๋ ์ฆ, ๋ฎ์ด์์. ( val ์ ์ ์ฅ๋์ด์์ )
A[j] = val : ๊ธฐ์กด์ ๋ฏธ์ ๋ ฌ ์ฒซ ๋ฒ์งธ ๋ฐ์ดํฐ๋ฅผ val ์ ์ ์ฅ์ ํด๋์์ผ๋ฏ๋ก val ๊ฐ์ A[j] ์ ์ฝ์
( ์ฆ, ๊ตํ ๋ ๊ฒ์ด ๋จ. )
** ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ ๊ฒ์ด ์ฝ์
์ ๋ ฌ์. **
(2) ์ฝ์
์ ๋ ฌ - ์์
์์ ์ฝ๋๋ฅผ ๋์์ํค๋ฉด ์์ ๊ฐ์ด ๊ทธ๋ฆผ์ ํํ๋ก ํํ์ด ๊ฐ๋ฅํจ.
1๋จ๊ณ : ์ ์ผ ์ฒซ ๋ฒ์งธ ์์์ธ 30์ ์ ๋ ฌ๋ถ๋ถ์ผ๋ก ์ ํด๋๊ณ , ๋ฏธ์ ๋ ฌ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค์ธ 20๊ณผ ๋น๊ต ํ ์ฝ์
์ ๋ ฌ
2๋จ๊ณ : ๋ฏธ์ ๋ ฌ ๋ถ๋ถ ์ฒซ ๋ฒ์งธ 40๊ณผ ์ ๋ ฌ ๋ถ๋ถ 30๊ณผ ๋น๊ต ํ 30์ด ์์ผ๋ฏ๋ก, ์ ์๋ฆฌ์ ์๊ฒ ๋จ.
3๋จ๊ณ : 35์ 40์ ๋น๊ต 40์ด ๋ ํฌ๊ธฐ ๋๋ฌธ์ 40์ด 35์ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๊ฒ ๋๋ฉฐ, 35๋ ๋ 30๊ณผ ๋น๊ต๋ฅผ ํ๊ฒ ๋๋ฉฐ, 30๋ณด๋ค๋ ํฌ๊ธฐ ๋๋ฌธ์ ๊ธฐ์กด์ 40์ด ์๋ ์๋ฆฌ๋ฅผ ์ฐจ์งํ๋ ์๋ฆฌ์.
** ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋๋ฐ ์ฌ๊ธฐ์ ํต์ฌ์ ์ ๋ ฌ ๋ถ๋ถ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ์ด๋์ ํด์ ์ฝ์
์ด ๋๋ฉฐ, ์ฝ์
์ด ๋์ด ๋ฎ์ด์์์ง ๋ฐ์ดํฐ๋ ๊ธฐ์กด์ ๋ณ์์ ์ ์ฅ์ ํด๋์๋ค๊ฐ ์ ๋ ฌ ๋ถ๋ถ๊ณผ ๋น๊ต๋ฅผ ๋ค ๋๋ง์น๋ฉด ํด๋น ์๋ฆฌ๋ฅผ ์ฐพ์์ ์ฝ์
๋์ด ์ ๋ ฌ๋๋ ๋ฐฉ์์. **
(3) ์ฝ์
์ ๋ ฌ - ์ฑ๋ฅ๊ณผ ํน์ง
์๊ฐ๋ณต์ก๋ : O(n^2)
2์ค for ๋ฌธ : 2๋ฒ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฌ๋๋ฐ ๋ฃจํ j์ ๊ฒฝ์ฐ๋ ์ต๋ n-1 ๋ฒ๊น์ง ๋น๊ต๋ฅผ ํ ์ ์์. ์ฆ O(n^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง.
๋ํ, ๋ถ๋ฑํธ๋ง ๋ณ๊ฒฝํด์ฃผ๋ฉด ์ค๋ฆ์ฐจ์์ด ์๋ ๋ด๋ฆผ์ฐจ์์ผ๋ก๋ ์ ๋ ฌ์ด ๊ฐ๋ฅํจ.
์์ ์ ์ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์ฝ์
์ ๋ ฌ์ ๊ฒฝ์ฐ ์ธ์ ํ ๋ ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ฉด ์์น ๊ตํ์ ํ์ง ์์.
์ด์ ๋, ์ ๋ ฌ ๋ถ๋ถ๊ณผ ๋น์ ๋ ฌ ๋ถ๋ถ๊ฐ์ ๋น๊ต๋ฅผ ํตํด์ ์ ๋ ฌ์ด ๋๊ธฐ ๋๋ฌธ์.
์
๋ ฅ ๋ฐ์ดํฐ์ ์๋ ์์์ ๋ฏผ๊ฐ : ์ฝ๊ฒ ๋งํด, ์
๋ ฅ๋ฐ์ดํฐ๊ฐ ์ ๋ ฌ๋ ์ํ๋ก ์ฃผ์ด์ง๋ค๋ฉด O(n) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ทธ๋ ์ง ์๊ณ ์ญ์์ผ๋ก ์ฃผ์ด์ง๋ ์ต์
์ ๊ฒฝ์ฐ O(n^2) ์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋จ.
์ญ์์ผ๋ก ์ฃผ์ด์ง๋ ๊ฒฝ์ฐ(์ต์
) O(n^2) , ์ ์์๋๋ก ์ฃผ์ด์ง ๊ฒฝ์ฐ(์ต์ ) O(n) ์ด ๋๋ค.
โ
5. ์
ธ ์ ๋ ฌ
(1) ์
ธ ์ ๋ ฌ ์ด๋?
์
ธ ์ ๋ ฌ : ์ฝ์
์ ๋ ฌ์ ์ฅ์ ์ ์ด๋ฆฌ๊ณ ๋จ์ ์ ๋ณด์ํ ๋ฐฉ์์ ์ ๋ ฌ์.
์ฝ์
์ ๋ ฌ ๋จ์ : ๋ฏธ์ ๋ ฌ ๋ถ๋ถ์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌ ๋ถ๋ถ์ ์ฝ์
ํ๋ ๊ณผ์ ์์ ๋ ๋ฐ์ดํฐ์ ๋์ ๋น๊ต๋ฅผ ํตํด์ ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๋๋ฐ ์ด๋ ์ ์๋ฆฌ๊ฐ ๋ฉ๋๋ผ๋ ํ ์๋ฆฌ์ฉ๋ง ์ด๋ํด์ ์ฐพ์๊ฐ์ผํ๋ ๋จ์ ์ด ์์.
์ฝ์
์ ๋ ฌ์ ๋ฌธ์
- [9,1,2,3,4,5,6,7,8]
(์ฝ์
์ ๋ ฌ ๊ณผ์ )
- 1 → 9 ์
- 2 → 9 ์
- 3 → 9 ์
...
- 9๊ฐ ๋ค๋ก ๊ฐ๊ธฐ ์ํด: 9 → 8์นธ ์ด๋
์ฆ, ์ด์ ๊ฐ์ด ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ฐ ์ด๋์ด ๋งค์ฐ ๋นํจ์จ์ ์ด๋ฉฐ, ์๊ฐ๋ณต์ก๋๊ฐ O(n^2) ์ด ๋ ๊ฐ๋ฅ์ฑ์ด ๋์ ๋จ์ ์ด ์์.
์
ธ ์ ๋ ฌ : ์ด๋ฌํ ์ฝ์
์ ๋ ฌ์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ ์
๋ ฅ ๋ฐฐ์ด์ ๋ถ๋ถ ๋ฐฐ์ด ๋ก ๋๋์ด ๋ถ๋ถ ๋ฐฐ์ด๊ฐ ๋น๊ต ๋ฐ ๊ตํ(์ฝ์
์ ๋ ฌ) ์ ํตํด์ ์ ๋ ฌ์ ํ๋ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์๋ ์์๋ ํ ๋ฒ์ ์ด๋์ํฌ ์ ์์ด ์ฝ์
์ ๋ ฌ๋ณด๋ค ํจ์จ์ ์ธ ์ ๋ ฌ์ด ๊ฐ๋ฅํจ.
** ๋ํ, ๋ถ๋ถ๋ฐฐ์ด์ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ์ ํตํด์ ๋ถ๋ถ๋ฐฐ์ด์ด ์กด์ฌํ๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ๋
ผ๋ฆฌ์ ์ธ ์กด์ฌ์ด๋ค. **
<< ์
ธ ์ ๋ ฌ >>
[16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]: n = 16
( 1๋จ๊ณ ๋น๊ต: gap = n(16) / 2 = 8 )
- index ๊ฐ๊ฒฉ: gap(8)์ธ ๊ทธ๋ฃน ์์ฑ = 8 group
- [16,1,2,3,4,5,6,7],[8,9,10,11,12,13,14,15] => 16, 9 ๋น๊ต ๊ตํ ...
- Group 1:[16, 8], Group 2:[1, 9] ... Group 8:[7, 15] ( ์ด 8๊ฐ ๊ทธ๋ฃน )
- ์ด 8๊ฐ์ ๊ฐ ๊ทธ๋ฃน์์ ์ฝ์
์ ๋ ฌ ์ํ
- 1๋จ๊ณ ๊ฒฐ๊ณผ: [8,1,2,3,4,5,6,7,16,9,10,11,12,13,14,15]
( 2๋จ๊ณ ๋น๊ต: gap = 8 / 2 = 4 )
- index ๊ฐ๊ฒฉ: gap(4)์ธ ๊ทธ๋ฃน ์์ฑ = 4 group
- Group 1: [8,4,16,12] → [4,8,12,16]
- Group 2: [1,5,9,13] → ๋ณํ ์์
- Group 3: [2,6,10,14] → ๋ณํ ์์
- Group 4: [3,7,11,15] → ๋ณํ ์์
- 2๋จ๊ณ ๊ฒฐ๊ณผ: [4,1,2,3,8,5,6,7,12,9,10,11,16,13,14,15]
( 3๋จ๊ณ ๋น๊ต: gap = 4 / 2 = 2 )
- index ๊ฐ๊ฒฉ: gap(2)์ธ ๊ทธ๋ฃน ์์ฑ = 2 group
- Group 1: [4,2,8,6,12,10,16,14] → [2,4,6,8,10,12,14,16]
- Group 2: [1,3,5,7,9,11,13,15] → [1,3,5,7,9,11,13,15]
- 3๋จ๊ณ ๊ฒฐ๊ณผ: [2,1,4,3,6,5,8,7,10,9,12,11,14,13,16,15]
( 4๋จ๊ณ ๋น๊ต: gap = 2 / 2 = 1 )
- ์ผ๋ฐ ์ฝ์
์ ๋ ฌ ์ํ -> ์ด์ 1~3๋จ๊ณ๋ ๊ฐ๊ฒฉ(gap)์ด ์๋ ์ฝ์
์ ๋ ฌ์.
- 4๋จ๊ณ ๊ฒฐ๊ณผ: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
๊ฒฐ๋ก : ๋ง์ง๋ง ๋จ๊ณ๋ฅผ ์ ์ธํ ๋ชจ๋ ๋จ๊ณ์์๋ ๊ฐ๊ฒฉ(gap)์ด ์๋ ์ฝ์
์ ๋ ฌ์ ์งํํ๋ฉฐ, ๋ง์ง๋ง gap = 1 ๋จ๊ณ์์๋ ์ผ๋ฐ ์ฝ์
์ ๋ ฌ์ ์งํํ๋ค. ๋ํ, gap = 1 ๋จ๊ณ์์ ์ฝ์
์ ๋ ฌ์ ํ๋ฉด ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ ๋ฌด์กฐ๊ฑด ์ ๋ ฌ์ด ๋จ.
๋ํ, ๋ถ๋ถ๋ฐฐ์ด์ ๊ฐ ๊ฑฐ๋ฆฌ๊ฐ ๋น๊ต๋ฅผ ํตํด์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ฐ๊ฐ์ ๋น๊ต๋ฅผ ํจ.
(2) ์
ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
D : ๋ถ๋ถ ๋ฐฐ์ด์ ๊ฐ์(๊ฐ๊ฒฉ์ ํฌ๊ธฐ)๋ฅผ ์๋ฏธํ๋ฉฐ, ๋๋๊ธฐ 2๋ฅผ ํ๋ฉด์ ๊ฐ๊ฒฉ์ ์ ์ฐจ ์ค์ด๋ ๋ฐ๋ณต๋ฌธ์.
2์ค for๋ฌธ : ๋ถ๋ถ ๋ฐฐ์ด์ ํฌ๊ธฐ๋งํผ ๋ฐ๋ณตํด์ ๋๋ฆฌ๋ฉด์ ๋ถ๋ถ๋ฐฐ์ด์ ๋ํ ์ฝ์
์ ๋ ฌ์ ์งํํ๋ ์ญํ ์ ํจ.
def shellSort(A):
n = len(A)
D = n // 2 # ๋ฒ๋ฆผ ๋๋์
while D >= 1:
for i in range(D, n): # D ~ n ๊น์ง ๋ฐ๋ณต
val = A[i] # 8๋ฒ์งธ ์ธ๋ฑ์ค์ ๊ฐ์ ๋ฃ์ด์ค๋ฏ.
j = i
while j >= D and A[j - D] > val:
A[j] = A[j - D]
j -= D # 8 - 8 = 0
A[j] = val
D //= 2
A = [16,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
shellSort(A)
print("์ ๋ ฌ ๊ฒฐ๊ณผ:", A)
์
ธ ์ ๋ ฌ์ ํ์ด์ฌ ์ฝ๋๋ก ํ๋ฉด ์์ ๊ฐ์ ์ฝ๋๋ก ๊ตฌํ์ด ๊ฐ๋ฅํจ.
(3) ์
ธ ์ ๋ ฌ ์์
2๋ก ๋ฐ๋ณต์ ์ผ๋ก ๋ถ๋ถ๋ฐฐ์ด์ ๋
ผ๋ฆฌ์ ์ธ ๋จ์์ธ ๊ฑฐ๋ฆฌ๋ก ๋๋๊ฒ ๋จ.
์ดํ, ๋ด๋ถ for ๋ฌธ์ ํตํด์ ๋ฐ๋ณต์ ์ผ๋ก ๋น๊ต ํ ๋ถ๋ถ ์ ๋ ฌ์ ์งํํจ.
(4) ์
ธ ์ ๋ ฌ ํน์ง
์ด๋ค ์์ด์ ์ฌ์ฉํ๋๋์ ๋ฐ๋ผ์ ์ฑ๋ฅ์ด ๋ฌ๋ผ์ง๋ฉฐ, ๊ฐ์ฅ ์ข์ ๊ฐ๊ฒฉ์ ์ฐพ๋ ๊ฒ์ ๋ฏธํด๊ฒฐ ๊ณผ์ ์.
์ฝ๊ฒ ๋งํด, ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์ ์ํ์ ์ผ๋ก ํ๋์ ์์ด๋ก ๋ณด๋ฉฐ, ํด๋น ์์ด์ ์ฑ๋ฅ ์ฒ๋๋ ์ญ์ ์ ๊ฐ์๋ก ๋ณผ ์ ์์ผ๋ฉฐ, ํด๋น ์ญ์ ์ [3, 1, 2] ๋ผ๋ ์์ด์์ (3, 1) ๊ณผ (3, 2)๋ ์์๊ฐ ๋ค์งํ ์์ผ๋ฏ๋ก ์ญ์ ์ผ๋ก ๋ณด๋ ๊ฒ์ด๋ค.
** ์ผ๋ฐ์ ์ธ ์ฝ์
์ ๋ ฌ์ ์ธ์ ํ ๊ฐ๋ผ๋ฆฌ๋ง ๋น๊ตํด์ ์ด ์ญ์ ์ ํ ๋ฒ์ ํ๋์ฉ๋ง ์ ๊ฑฐ๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๋งค์ฐ ๋๋ฆผ **
** ํ์ง๋ง, ์
ธ ์ ๋ ฌ์ D๋งํผ ๋จ์ด์ง ๊ฐ๋ค์ ๋น๊ตํจ์ผ๋ก์จ, ํ ๋ฒ์ ์ด๋์ผ๋ก ์๋ง์ ์ญ์ ๊ด๊ณ๋ฅผ ๋์์ ํด๊ฒฐ์ ํจ. **
** ์ฆ, ์์ด์ ์ํ๋ฅผ ์์ฃผ ๋น ๋ฅด๊ฒ ์ ๋ ฌ์ ๊ฐ๊น์ด ์ํ๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ฒ์. **
์๊ฐ๋ณต์ก๋ : ์ต์ O(nlogn) / ์ต์
O(n^2)
์ ์๋ฆฌ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์
ธ ์ ๋ ฌ์ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ฌ์ฉํ์ง ์๊ณ , ์ ์๋ฆฌ์์ ์ด๋์ ํจ.
์์ ์ ์ด์ง ์์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ : ์ฝ์
์ ๋ ฌ์ ๊ฒฝ์ฐ ํ๋์ฉ ๋น๊ต๋ฅผ ํ๋ฉด์ ์ ์๋ฆฌ๋ฅผ ์ฐพ์๊ฐ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์๋ผ๋ฆฌ์ ์์น๋ ๋ณํ์ง ์์ง๋ง, ์
ธ ์ ๋ ฌ์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ฐ๊ณผ ๋น๊ต๋ฅผ ํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ ๊ฐ๋ผ๋ฆฌ ์์๊ฐ ๋ค์์ผ ์ ์์.