1. ๋ฒ๋ธ ์ ๋ ฌ
(1) ์ ์
์ธ์ ํ ์์๋ผ๋ฆฌ ๋น๊ต ํ์, ์ ๋ ฌ๋์ด ์์ง ์๋ค๋ฉด, ๋ ์์์ ์์น๋ฅผ swapํ๋ค.
์ด๋ฐ ์์ผ๋ก ์ ๋ ฌํ๊ฒ ๋๋ฉด ๋ฐฐ์ด ํน์ ๋ฆฌ์คํธ์ ์ค๋ฅธ์ชฝ๋ถํฐ ๊ฐ๋ค์ด ์ ๋ ฌ๋์ด ์์ด๊ฒ ๋๋ค.
(์ค๋ฆ์ฐจ์์ด๋ฉด, ์ ๋ ฌ๋์ง ์์ ๊ฐ ์ค ์ต๋๊ฐ์ด ๊ณ์ ์ค๋ฅธ์ชฝ์ ์์. ๋ด๋ฆผ์ฐจ์์ ๋ฐ๋๋ก ์ต์๊ฐ๋ค์ด ์ค๋ฅธ์ชฝ์ ์์)
์์
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
๋ฐ๋ณต๋ฌธ ํ ๋ฒ๋น ๊ฐ ํ๋๊ฐ ์ ๋ ฌ๋จ. ์ด๋ฌํ ๋ฐ๋ณต๋ฌธ์ด N๊ฐ ํ์. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋
O(n^2)
2. ์ ํ ์ ๋ ฌ
(1) ์ ์
- ์ ๋ ฌ๋์ง ์์ ๋ฒ์์์ ์ต์๊ฐ(ํน์ ์ต๋๊ฐ) ์ฐพ๊ธฐ
- ํด๋น ๊ฐ์ ๋ฐฐ์ด ๋งจ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธฐ๊ธฐ
- ์ ๋ ฌ๋ ๋๊น์ง ์์ ๊ณผ์ ๋ฐ๋ณต
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
'N๊ฐ ์ค ์ต์๊ฐ ์ฐพ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด๋ฃ๊ธฐ O(N)'๋ฅผ N๋ฒ ๋ฐ๋ณต. ์๊ฐ๋ณต์ก๋๋
O(\( N^{2} \))
3. ์ฝ์ ์ ๋ ฌ
(1) ์ ์
- ์ ๋ ฌ๋์ง ์์ ๋ฒ์์์ ์ฐจ๋ก๋๋ก ๊ฐ์ ์กฐํ
- ์ ๋ ฌ๋ ๋ฒ์ ๋ด์์ ํ์ฌ ์กฐํ ์ค์ธ ๊ฐ์ ์ฝ์
ํ ์ ์ ํ ์์น๋ฅผ ์ฐพ๋๋ค.
(์ค๋ฆ์ฐจ์: ์กฐํ ์ค์ธ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ ๋ง๋๋ฉด, ๊ทธ ์์ ์ฝ์ , ๋ด๋ฆผ์ฐจ์: ์กฐํ ์ค์ธ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๋ง๋๋ฉด ๊ทธ ์์ ์ฝ์ ) - ์ฝ์ ํ ์์น์ ํ์ฌ ๊ฐ์ ์ฝ์ ํ๋ค. (์ ๋ ฌ๋ ์์ญ์ด +1 ์ฆ๊ฐํ๋ค.)
- ์ ๋ ฌ๋์ง ์์ ์์ญ์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
N๊ฐ ์ค ์กฐํํ ๊ฐ ๋ฝ๊ธฐ O(N), ํด๋น ๊ฐ์ ์ ๋ ฌ๋ ์์ญ์์ ์์น ์ก๊ธฐ - ํ๊ท N/2๋ฒ์ ๋์๊ด๊ณ ๋น๊ต ํ์ O(\(\frac{N}{2}\)) ๋ฐ๋ผ์ ์๊ฐ ๋ณต์ก๋๋ O(n^2)
4. Quick ์ ๋ ฌ
(1) ์ ์
์ค๋ฆ์ฐจ์์ Quick ์ ๋ ฌ์ ์ด์ฉํด ๊ตฌํํ๋ค๊ณ . ๋ฒ๋ธ ์ ๋ ฌ
(1) ์ ์
์ธ์ ํ ์์๋ผ๋ฆฌ ๋น๊ต ํ์, ์ ๋ ฌ๋์ด ์์ง ์๋ค๋ฉด, ๋ ์์์ ์์น๋ฅผ swapํ๋ค.
์ด๋ฐ ์์ผ๋ก ์ ๋ ฌํ๊ฒ ๋๋ฉด ๋ฐฐ์ด ํน์ ๋ฆฌ์คํธ์ ์ค๋ฅธ์ชฝ๋ถํฐ ๊ฐ๋ค์ด ์ ๋ ฌ๋์ด ์์ด๊ฒ ๋๋ค.
(์ค๋ฆ์ฐจ์์ด๋ฉด, ์ ๋ ฌ๋์ง ์์ ๊ฐ ์ค ์ต๋๊ฐ์ด ๊ณ์ ์ค๋ฅธ์ชฝ์ ์์. ๋ด๋ฆผ์ฐจ์์ ๋ฐ๋๋ก ์ต์๊ฐ๋ค์ด ์ค๋ฅธ์ชฝ์ ์์)
์์
๏ฟผ
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
๋ฐ๋ณต๋ฌธ ํ ๋ฒ๋น ๊ฐ ํ๋๊ฐ ์ ๋ ฌ๋จ. ์ด๋ฌํ ๋ฐ๋ณต๋ฌธ์ด N๊ฐ ํ์. ๋ฐ๋ผ์ ์๊ฐ๋ณต์ก๋๋
O(n^2)
2. ์ ํ ์ ๋ ฌ
(1) ์ ์
์ ๋ ฌ๋์ง ์์ ๋ฒ์์์ ์ต์๊ฐ(ํน์ ์ต๋๊ฐ) ์ฐพ๊ธฐ
ํด๋น ๊ฐ์ ๋ฐฐ์ด ๋งจ ์ผ์ชฝ์ผ๋ก ์ฎ๊ธฐ๊ธฐ
์ ๋ ฌ๋ ๋๊น์ง ์์ ๊ณผ์ ๋ฐ๋ณต
๏ฟผ
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
'N๊ฐ ์ค ์ต์๊ฐ ์ฐพ์ ์ค๋ฅธ์ชฝ์ผ๋ก ๋ฐ์ด๋ฃ๊ธฐ O(N)'๋ฅผ N๋ฒ ๋ฐ๋ณต. ์๊ฐ๋ณต์ก๋๋
O(\( N^{2} \))
3. ์ฝ์ ์ ๋ ฌ
(1) ์ ์
์ ๋ ฌ๋์ง ์์ ๋ฒ์์์ ์ฐจ๋ก๋๋ก ๊ฐ์ ์กฐํ
์ ๋ ฌ๋ ๋ฒ์ ๋ด์์ ํ์ฌ ์กฐํ ์ค์ธ ๊ฐ์ ์ฝ์ ํ ์ ์ ํ ์์น๋ฅผ ์ฐพ๋๋ค.
(์ค๋ฆ์ฐจ์: ์กฐํ ์ค์ธ ๊ฐ๋ณด๋ค ํฐ ๊ฐ์ ๋ง๋๋ฉด, ๊ทธ ์์ ์ฝ์ , ๋ด๋ฆผ์ฐจ์: ์กฐํ ์ค์ธ ๊ฐ๋ณด๋ค ์์ ๊ฐ์ ๋ง๋๋ฉด ๊ทธ ์์ ์ฝ์ )
์ฝ์ ํ ์์น์ ํ์ฌ ๊ฐ์ ์ฝ์ ํ๋ค. (์ ๋ ฌ๋ ์์ญ์ด +1 ์ฆ๊ฐํ๋ค.)
์ ๋ ฌ๋์ง ์์ ์์ญ์ ๊ฐ์ ๊ฐ์ง๊ณ ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๏ฟผ
์ฌ์ง ์ถ์ฒ: ๋ธ๋ก๊ทธ
(2) ์๊ฐ ๋ณต์ก๋:
N๊ฐ ์ค ์กฐํํ ๊ฐ ๋ฝ๊ธฐ O(N), ํด๋น ๊ฐ์ ์ ๋ ฌ๋ ์์ญ์์ ์์น ์ก๊ธฐ - ํ๊ท N/2๋ฒ์ ๋์๊ด๊ณ ๋น๊ต ํ์ O(\(\frac{N}{2}\)) ๋ฐ๋ผ์ ์๊ฐ ๋ณต์ก๋๋ O(n^2)
4. Quick ์ ๋ ฌ
(1) ์ ์
์ค๋ฆ์ฐจ์์ Quick ์ ๋ ฌ์ ์ด์ฉํด ๊ตฌํํ๋ค๊ณ ํด๋ณด์.
- ๊ธฐ์ค ๊ฐ์ธ pivot ๊ฐ์ ์ค์ ํด์, ๊ทธ ๊ฐ๋ ํฐ ๋ฐ์ดํฐ๋ค์ ์ค๋ฅธ์ชฝ์ผ๋ก, ๊ทธ ๊ฐ๋ณด๋ค ์์ ๋ฐ์ดํฐ๋ค์ ์ผ์ชฝ์ผ๋ก ๋ชฌ๋ค.
(pivot ์ ์ธ ๋งจ ์ผ์ชฝ์ index๋ฅผ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ฅผ i, ๋งจ ์ค๋ฅธ์ชฝ์ ๊ฐ๋ฅดํค๋ ํฌ์ธํฐ๋ฅผ j๋ผ๊ณ ํด๋ณด์.)- i๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ด pivot ๊ฐ๋ณด๋ค ์์ผ๋ฉด i++
- j๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ด pivot ๊ฐ๋ณด๋ค ํฌ๋ฉด j--
- i๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ด pivot๋ณด๋ค ํฌ๋ค๋ฉด i๋ ํด๋น ์๋ฆฌ์ ๋ฉ์ถฐ์์ ๊ฒ์ด๋ค. j๋ ๋ง์ฐฌ๊ฐ์ง๋ก j๊ฐ ๊ฐ๋ฅดํค๋ ๊ฐ์ด pivot๋ณด๋ค ์์ผ๋ฉด ๋ฉ์ถฐ์์ ๊ฒ์ด๋ค. ๋ ๋ค ์์ ์ด์ ๋ก ๋ฉ์ถฐ์๋ค๋ฉด ์๋ก ๊ฐ์ ๋ฐ๊พธ๊ณ , i++, j-- ํ๋ค.
- pivot์ 2๊ฐ์ ์ง๋จ ์ฌ์ด์ index์ ์ ์ฅํ๋ค.
- ๊ฐ ์ง๋จ๋ณ๋ก ์ฌ๊ท๋ฅผ ์ด์ฉํด ๋ quick ์ ๋ ฌ์ ๋ฐ๋ณตํ๋ค. (๋ ์ด์ ์ชผ๊ฐ์ง์ง ์์ ๋๊น์ง)
(2) ์๊ฐ ๋ณต์ก๋:
์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๋ ค๋๋ฐ pivot์ ๋งค๋ฒ ์ต์๊ฐ์ผ๋ก ์ก๋๋ค๊ณ ํด๋ณด์. ์์ ์์์์๋ 4,7,11,12 ์์ผ๋ก ์ก๋ ๊ฒ์ด๋ค. ์ด๋ฌ๋ฉด ํต์ ๋ ฌ ๊ณผ์ ํ ๋ฒ๋น ํ ๊ฐ๋ฐ์ ์ ๋ ฌ์ด ๋์ง ์๋๋ค.
ex) Loop1 - pivot=4: {} {7,11,12,13,15,16,18,19}, Loop2 - pivot=7: {4} {11,12,13,15,16,18,19}
์ด๋ฌ๋ฉด ํ๊ท N/2๋ฒ์ ์ํ๋ฅผ N๋ฒ ๋ฐ๋ณตํ๋ ๊ฒฐ๊ณผ๊ฐ ๋๋ค.
๋ฐ๋ผ์ ์ต์ ์ ์๊ฐ ๋ณต์ก๋๋
O(n^2)
5. ๋ณํฉ ์ ๋ ฌ
(1) ์ ์
๋ณํฉ ์ ๋ ฌ์ ๋ถํ ์ ๋ณต
+ ํฌ ํฌ์ธํฐ์ ๊ฐ๋
์ ์ด์ฉํ์ฌ ๋ฐฐ์ด ํน์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ก ์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฐฐ์ด ํน์ ๋ฆฌ์คํธ๋ฅผ ๋ ์ด์ ์ชผ๊ฐค ์ ์๋ ๋จ์๊น์ง ์ชผ๊ฐ ๋ค. (๋ถํ )
- ํด๋น ๋จ์์์ ๋์๊ด๊ณ ๋น๊ต๋ก ๊ฐ์ ์ ๋ ฌํ๋ค.
- ๊ฐ์ ๋จ๊ณ์ ๋จ์๋ค๋ผ๋ฆฌ ์๋ก์ ๊ฐ ๊ฐ์ ๋์๊ด๊ณ๋ฅผ ํ์ธ ํ ๋ณํฉ ๋ฐ ์ฌ์ ๋ ฌํ๋ค.
(์ ๋ณต by ํฌ ํฌ์ธํฐ ์์ธ ๋ฐฉ๋ฒ: ๋ฐ์ ๊ธฐ์ ) - ๋ฐฐ์ด ํน์ ๋ฆฌ์คํธ ์ ์ฒด๊ฐ ์ ๋ ฌ๋ ๋๊น์ง ์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
(2) ๊ตฌํ ๋ฐฉ๋ฒ
๋ฐฐ์ด์ ๋ ๋ถ๋ถ์ ๋ณํฉํ ๋๋ฅผ ์๊ฐํด๋ณด์. ์ด๋ ํฌ์ธํฐ๊ฐ ์ด 3๊ฐ ํ์ํ๋ค.
- ์ค๋ฆ์ฐจ์ ์ ๋ ฌ์ ๊ฐ์ ํ์ ๋, s์ m์ ๋น๊ตํด์ ๋ ์์ ๊ฐ์ k๋ก ๋ณด๋ธ๋ค. ๊ทธ ํ k++, k์ ๊ฐ์ ์ง์ด๋ฃ์ ํฌ์ธํฐ ++ ์ ํ๋ค.
- ํด๋น ๋ฐ๋ณต์ s๋ m์ด ์์ ์ ๋ฒ์ ๋งจ ๋๊น์ง ๊ฐ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
- ์ด๋ ๊ฒ ๋๋ฉด ํ์ชฝ ๋ฐฐ์ด์ ๊ฐ์ ์ ๋ถ ๋ค ์์งํ๋๋ฐ, ๋๋จธ์ง๋ ์๋ ๊ฒ์ด๋ค.
์ ์ฒด ๋ฐฐ์ด์ ๋น ๋ถ๋ถ์ ํด๋น ๋๋จธ์ง๋ค์ ๋ฐ๋ก๋ฐ๋ก ์ฑ์์ฃผ๋ฉด ๋๋ค. (๋ถ๋ถ ๋ฐฐ์ด๋ค์ ๋ชจ๋ ์ ๋ ฌ๋ ์ํ์ด๊ธฐ ๋๋ฌธ์ด๋ค.)
(3) ์๊ฐ ๋ณต์ก๋:
O(nlogn)
6. ๊ธฐ์ ์ ๋ ฌ
(1) ์ ์
์ฃผ์ด์ง ์ ๋ ฅ๊ฐ์ ์๋ฆฟ์๋ฅผ ๋น๊ตํ์ฌ ๊ฐ์ ์ ๋ ฌํ๋ ๋ฐฉ๋ฒ.
a. ์ฅ์
์ ๋ ฌ๋ค ์ค์์ ๊ฐ์ฅ ์ฑ๋ฅ์ด ๋น ๋ฅด๋ค. O(n)
b. ๋จ์
- ์ฑ๋ฅ์ด ๋น ๋ฅธ ๋งํผ, ๋ง์ ๋์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๋ค. Queue๊ฐ 10๊ฐ (์์ ๊ฐ์ด ์์ ๋๋ 10๊ฐ ๋ ํ์) ํน์ Bucket ๋ฐฐ์ด์ ๋ฐ๋ก ์จ์ผํ๋ค. ๋ํ 10๊ฐ์ Queue์ ์ ๋ ฌ๋ ์๋ฅผ ๋ฃ์๋ค ๋นผ๋ด๋ ๊ณผ์ ์์ ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ์์๊ฐ ํฌ๋ค.
- ์์ ์ ์์ ์์ ์ ์๋ก ๋ฐ์ดํฐ์ ์ข ๋ฅ๊ฐ ์๋ถํ ๋์๋ค๋ฉด, ์์ ์ ์๋ ์์ ์ ์๋ผ๋ฆฌ ๋ฐ๋ก ๋ชจ์์ ์ฒ๋ฆฌ, ์์ ์ ์๋ ์์ ์ ์๋ผ๋ฆฌ ๋ฐ๋ก ๋ชจ์์ ์ฒ๋ฆฌํด์ผ ํ๋ค. (์ ๊ทธ๋ฌ๋ฉด ์ ๋ ฌ์ด ์๋๋ค.)
(2) ๊ตฌํ ๋ฐฉ๋ฒ
์ธํ
Queue 10๊ฐ๋ฅผ ์ค๋นํ๋ค. ํน์ ๊ทธ์ ์์ํ๋ bucket ๋ฐฐ์ด์ ์ค๋นํ๋ค. (bucket ๋ฐฐ์ด ์ฌ์ฉ๋ฒ์ ์ ์ ๋ ฌํ๊ธฐ 3 ์ ๋ฆฌ์ ๋ณด๋ฉด ์๋ค.)
๊ฐ Queue๋ 0 ~ 9 ์ฌ์ด์ ์ซ์๋ฅผ ๋๋ณํ๋ค.
๋ค์์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๋ฐฐ์ด์ด๋ค.
- ๋จผ์ 1์ ์๋ฆฟ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ ์ด ํด๋นํ๋ ๋ฒํธ์ queue์ ์ง์ด๋ฃ๋๋ค.
- 0๋ฒ์งธ queue๋ถํฐ 9๋ฒ์งธ queue๊น์ง ์ฐจ๋ก๋๋ก ๊ฐ์ ์๋์ ๋ฐฐ์ด์ ์ ์ฅ์ํจ๋ค.
- ์ด๋ฒ์๋ 10์ ์๋ฆฟ์๋ฅผ ํ ๋๋ก ๋ค์ ์ง์ด๋ฃ๋๋ค. (์์๋ ๋ฐฐ์ด์ 0๋ฒ๋ถํฐ ์ฐจ๋ก๋๋ก!)
- ๋ค์ ๋ฃ์ ๊ฐ๋ค์ 0๋ฒ queue๋ถํฐ ์์๋๋ก ๋นผ์ ์๋ณธ ๋ฐฐ์ด์ ์ง์ด๋ฃ๋๋ค.
- ์ด๋ฒ์๋ ๋ง์ง๋ง์ธ 100์ ์๋ฆฟ์๋ฅผ ํ ๋๋ก ๋ค์ queue์ ์ง์ด๋ฃ๋๋ค.
- ๋ง์ง๋ง์ผ๋ก ์๋ณธ ๋ฐฐ์ด์ ๋ฃ๋๋ค. ํด๋น ๊ฐ๋ค์ด ์ ๋ ฌ๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ฌ์ง ์ถ์ฒ: javapoint.com