1. ์๋ฃ๊ตฌ์กฐ
์ ํ ์๋ฃ๊ตฌ์กฐ - ๋ฆฌ์คํธ, ์คํ, ํ, ๋ฑ
๋น์ ํ ์๋ฃ๊ตฌ์กฐ - ์ฐ์ ๋ ํ, ํธ๋ฆฌ, ๊ทธ๋ํ, ๋คํธ์ํฌ
2.๋ฐฐ์ด๋ฆฌ์คํธ๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ฐจ์ด
๋ฐฐ์ด๋ฆฌ์คํธ์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์๋ก ๋ถ์ด์๊ณ , ๋ฌด์ธ๊ฐ ์ฝ์ , ์ญ์ ํ๋ ์์ ์ ํ ๋ ํด๋น ๊ณต๊ฐ์ ๋น์ด๋ค์ ๋ฐฐ์ด ์ ์ฒด๋ฅผ ๋น๊ธฐ๊ณ ๋ฏธ๋ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์
์ฝ์ , ์ญ์ ์ ํจ์จ์ด ๋จ์ด์ง, ๋์ ๋ชจ๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๋ถ์ด์๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ ์ ํ ๋ ํจ์จ์ด ์ข๊ณ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋นํด ์คํ ํจ์จ์ ์ค์ํจ
์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ํ๋ฐ์ด ์ง์ ๋ฐ์ดํฐ ํ๋์ ๋งํฌ ํ๋๋ฅผ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํด ํ ๋นํ ํ ํ ๋นํ ๋งํฌ ํ๋์ ์๋ ธ๋์ ์ฃผ์, ๋ท๋ ธ๋์ ์ฃผ์๋ฅผ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ ํ๋์ ์ ์ฅํ ๊ฐ์ ์ ๋ ฅํด ์ ์ฅํ๋ ๋ฐฉ์. ์ฝ์ ์ญ์ ์, ์๋ ธ๋์ ์ฃผ์, ๋ท๋ ธ๋์ ์ฃผ์๋ง ์ง์ฐ๊ณ ์๋ก ์ ๋ ฅํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ๋นํด ์ฝ์ ์ญ์ ๊ฐ ์ฉ์ดํจ. ๋์ ๊ฐ์ด ๋ถ์ฐ์ ์ผ๋ก ์ ์ฅ๋๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์์ ์ ๋ฐฐ์ด์ ๋นํด ์ฑ๋ฅ์ด ๋จ์ด์ง, ๋ฐฐ์ด์ ๋นํด ๋ฉ๋ชจ๋ฆฌ ํจ์จ์ ์ค์ํจ
3.์คํ๊ณผ ํ
์คํ์ ํ์ ์ ์ถ์ ๋ฐฉ์์ ์ ํ ๋ฆฌ์คํธ๋ก ์์ธ ์ ์๋๋ฏธ ๋ฑ์ ์์
์คํ ์๋จ์ top, ํ๋จ์ bottom์ผ๋ก ํ๋ค. bottom์ ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ ์คํ์ด ๋น์ด์๊ณ , top == bottom์ผ๊ฒฝ์ฐ ์คํ์ด ๊ฝ ์ฐฌ ๊ฒฝ์ฐ์ด๋ค.
ํ๋ ์ ์ ์ ์ถ์ ๋ฐฉ์์ ์๋ฃ๊ตฌ์กฐ๋ก ์ ํ ํ, ์ํ ํ๋ก ๋ถ๋ฅ๋์ง๋ง ์ ํ ํ๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค.
ํ์ ์์ front ๋ค๋ฅผ rear๋ผ๊ณ ํ๋ค. front == rear ์ผ๊ฒฝ์ฐ ํ๊ฐ ๋น์ด์๊ณ front%์์ == (rear+1)%์์ ์ผ ๊ฒฝ์ฐ ํ๊ฐ ๊ฝ ์ฐฌ ๊ฒฝ์ฐ์ด๋ค.
4.ํ
ํ์ ์ฐ์ ๋ ํ์ ์ฌ์ฉ๋๋ ์ ๋ ฌ ๋ฐฉ๋ฒ์ผ๋ก ์์ ์ด์ง ํธ๋ฆฌ๋ก ๊ตฌ์ฑ๋๋ค.
์ฐ์ ์์์ ์๋ง๋ ๊ฐ์ด ์๋ก ์ฌ๋ผ์ค๊ณ ์์ ๋ ธ๋์ ํฌ๊ธฐ์ ๋ฐ๋ฅธ ์์๋ ์๊ดํ์ง ์๋๋ค.
5. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ
์์ ์ ์ธ ์ ๋ ฌ ๋ฐฉ๋ฒ (๊ฐ์ ์์๊ฐ ์ ๋ ฌ ๋์ค ์์๊ฐ ๋ฐ๋์ง ์์): ์ ํO(n^2), ์ฝ์ O(n^2), ๋ฒ๋ธO(n^2), ํฉ๋ณO(nlog2n)
๋น ์์ ์ ์ธ ์ ๋ ฌ ๋ฐฉ๋ฒ (๊ฐ์ ์์๊ฐ ์ ๋ ฌ ๋์ค ์์๊ฐ ๋ฐ๋: ํตO(nlog2n) ํO(nlog2n)
๋ฒ์ธ: ์ (์ฝ์ ์ ๋ ฌ์ด ์ ๋ ฌ๋ ์ํ์์ ์๊ฐ๋ณต์ก๋๊ฐ O(n)์ธ ๊ฒ์ ์ด์ฉํ ์ ๋ ฌ) O(n^1.5), ๊ธฐ์์ ๋ ฌ (์๋ฆฟ์๋ก ๋ฒํท์ ๋ฃ๋ค ๋บ๋ค ํ๋ฉฐ ์ ๋ ฌ)O(kn)
6. ํต์ ๋ ฌ
์ ์ชฝ ๋์ ์๋ก i j ๋ผ๊ณ ์น๋ค.
ํผ๋ด์ ์ค์ ํ ํ ํผํฟ๋ณด๋ค i์ j๊ฐ ์ปค์ง๊ณ ์ค์ด๋ค๋ฉฐ ์์๊ฐ์ ์ผ์ชฝ ํฐ๊ฐ์ ์ค๋ฅธ์ชฝ์ ๋๋๋ค
๊ทธ ํ ํผ๋ด์ i = j ์ง์ ํน์ i > j ์ผ๋ j ์ง์ ์ ํผ๋ด์ ์ค์ ํ๋ค.
๋ฐ๋ณต
์ต์ ์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋๊ฐ O(log2n)์ด๋ฉฐ ์ต์ ์ ๊ฒฝ์ฐ (ํผ๋ด์ ๊ตํ์ด 1ํ๋ ์ผ์ด๋์ง ์์๋) O(n^2)์ ๋ณต์ก๋๋ฅผ ๋ณด์ธ๋ค.
median of 3, ๊ฐ์ํค ์ค์ , ํต์ ๋ ฌ๊ณผ ์ฝ์ ์ ๋ ฌ์ ์๋ธํ์ผ์ ๊ฐฏ์์ ๋ฐ๋ผ ๋๋ ํธ์ถํ๋ ์์ผ๋ก ๊ฐ์ ํ ์ ์๋ค.
๋ ์๋ฃ๊ตฌ์กฐ ์ค๊ฐ๊ณ ์ฌ๋ ์ด๊ฑฐ๋ ๋น์ทํ ๋ฌธ์ ๋ค ํ์ด๋ณธ๋ฏ;
๋ฐฐ์ด์ ์ฝ์ ์ญ์ ๋ฅผ ์ด์ฐํ๋ ธ?
์ฝ์ ์ญ์ ๊ฐ ๋๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค๋ฉด ๊ฐ๋ฅํ์ง c++ vector ์ฒ๋ผ
๊ทธ๊ฑด ๋ฐฐ์ด์ด ์๋๋ผ ๋ฐฐ์ด๋ฆฌ์คํธ ์์ ๊ทผ๋ฐ ๊ทธ๊ด์ ์์ ์ค๋ช ์ ใ ใ
๋ฆฌ์คํธ ๋ฐฐ์ธ๋ ๋ฐฐ์ด๋ก ๋ง๋๋ ๋ฐฉ๋ฒ, ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ๋ง๋๋ ๋ฐฉ๋ฒ ์ผ์ผ ๋ฐฐ์๊ฐ์ง๊ณ ๋ฐฐ์ด, ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ก ์ธ์ฐ๊ณ ์์๋ค์ด
๋ฉด์ ์๋ฆฌ๋ ์ํ๋ฌธ์ ํธ๋ ๊ณณ์ด ์๋๋ผ์.. ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ ๋ค๋ฅธ ์ฌ๋์ด ์์์ผ๋ฉด ๋ฐ๋ ค๋๊ฒ ๋ผ
๋์ ์์ํ๊ฒ ์ค๋ช ํ์ง ์๊ณ ์๋ฏธ๋ง ๋ช ํํ๊ฒ ์ ๋ฌํ๋ฉด ๋ ์ธ์์ด ์ข์์ง
๊ทผ๋ฐ ํ์ ๋ณดํต ์๋ฃ๊ตฌ์กฐ ํ์ ๋ฌป๊ธฐ๋ณด๋ค๋ ๋ฉ๋ชจ๋ฆฌ์์ญ ํ ์ง๋ฌธํ๊ฑฐ์ธ๋ฏ
์๋์๋ก ์ง๋ฌธ์ ๋ณด์๋ฉด ํ ์ ๋ ฌ ์ง๋ฌธ์๋๊น? ๋งค๋ชจ๋ฆฌ ํ์ด์? ๋ฌผ์ด๋ณด๋ฉด ๋๊ฒ ์ง๋ง...
์๋ฃ๊ตฌ์กฐ ๋ฌธ์ ๋ง ์๊ธธ๋ ๊ทธ์ง์ธ์ค
๋ณดํต ๋ฉ๋ชจ๋ฆฌ์์ญ๋ง ๋ฌผ๋ฌ๋ณด์ง ์๋ฃ๊ตฌ์กฐ ํ์ ๋ฌผ์ด๋ณด๋๋ฐ๊ฐ ์์ด์ ๋งํด๋ณธ๊ฑฐ์ ใ ใ ๋ญ ์ค์ ๋ฉด์ ์ฅ์์ ์ ํํ ๋ช ์ํด์ฃผ๊ฒ ์ง
๋ฐฐ์ด ์ ์ค๋ช ์ ๋ฆฌ์คํธ๋ ์์ด์ ํด๋จ๋
๋ฆฌ์คํธ ๋ฐฐ์ธ๋ ๋ฐฐ์ด ๋ด์ฉ์ด๋ผ...
๋ชจ๋ฅด๋์ ๋ค์ด ํ๋ฆฐ๋ด์ฉ๋ณด๋ฉด ํผ๋์ด ์์ ใฑ
์์ ๋ ๋ด์ฉ๋ ์๋ชป๋๊ฑฐ๊ฐ์๋ฐ ๋ด์ฉ๋ค์ด ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ถ์ด์๋๊ฑด ๋ฐฐ์ด์ด์ง ์ด๋ ์ด๋ฆฌ์คํธ๋ ์๋...
์๋ชป ๋ฐฐ์ด๊ฑด๊ฐ ์ด๋ ์ด ๋ฆฌ์คํธ๋ ๋ถ์ด์๋๊ฑธ๋ก ๋ฐฐ์ ๋๋ฐ
๋ฐ์ฑ ๋จผ์ ํ๊ณ ์ค๋ธ์ ํธํ์ ์ ์นดํผํด์ ๋ฃ๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์ด์ด์ง์ง๋ ์์๊ฑฐ๋ก๋ณด์ธ๋ค. ์ ์ด์ ์ฐธ์กฐํ์ ์ ๋ฃ๋ ๊ฒฝ์ฐ๋ ๋งํ ๊ฒ๋ ์๊ณ .. ๊ทผ๋ฐ ์ด๊ฑด ๋ฐฐ์ด๋ ๋ง์ฐฌ๊ฐ์ง์์?