ํต ์ ๋ ฌ ๊ฐ๋ ํต ์ ๋ ฌ์ ์ธ๋ถ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. pivot์ด๋ผ๋ ์์๋ฅผ ์ ํํ ํ, pivot์ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์๋ pivot๋ณด๋ค ์์ ์์๋ค์ ๋๊ณ ์ค๋ฅธ์ชฝ์๋ pivot๋ณด๋ค ํฐ ์์๋ค์ ๋๋๋ค. ์ดํ ์ํํธ์ถ์ ์ด์ฉํ์ฌ ์ฌ๊ท์ ์ผ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ผ๋ก ๋ถ๋ฅํด๋ ์์๋ค์ ๋ํด ์ ๊ณผ ๊ฐ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์์ ๊ทธ๋ฆผ์ ์ค๋ฅธ์ชฝ ์์๋ค์ ๋ํด ์ํํธ์ถํ ๋ชจ์ต์ด๋ค. ๋ถํ ์ด ๋ถ๊ฐ๋ฅํ ๋๊น์ง ๋ฐ๋ณตํ๋ค๋ณด๋ฉด ์ต์ํ์ ์์๋ก ๋๋์ด์ง๊ณ ์ดํ ์์๋๋ก ๊ฒฐํฉ์ ์งํํ๋ค. ์์ ๊ทธ๋ฆผ์์ ์์ด ์น ํด์ ธ์๋ ์์๋ค์ ์์๋๋ก ํฉ์น๋ฉด ๋๋ค. ํต ์ ๋ ฌ์ ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ ์ค ํ๋์ด๋ค. pivot์ผ๋ก 2๊ฐ์ ๋ถ๋ถ ๋ฐฐ์ด์ ์์ฑํ๋ ๋ถํ (Divide) ๊ณผ์ ๊ณผ ๋ถ๋ถ ๋ฐฐ์ด์ ์ฌ๊ท์ ์ผ๋ก ํธ์ถํ๋ ์ ๋ณต(Conquer) ๊ณผ์ ๊ณผ ์ ๋ ฌ๋ ๋ถ๋ถ ๋ฐฐ์ด์ ํฉ..
์ ํ ์ ๋ ฌ ๊ฐ๋ max, min ์ ๋ ฌ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค. ์ฒ์๋ถํฐ ๋ ์์๊น์ง ํ์ผ๋ฉด์ ์ต์๋ ์ต๋๋ฅผ ์ฐพ์์ ๋ฆฌ์คํธ์ ์ฒ์์ด๋ ๋์ ๋ฃ๊ณ ํด๋น ์์๋ฅผ ์ ์ธํ ๋ค๋ฅธ ์์์ ๋ํด ๋ค์ ์ ๋ ฌ์ ์ํํ๋ ๋ฐฉ๋ฒ์ด๋ค. ๋ฌด์์๋ก ์ ๋ ฌ๋ ๋ฐ์ดํฐ์ ์ฒ์๋ถํฐ ๋๊น์ง ํ์ํ ํ, ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์์ ๊ตํํ๋ค. ๊ทธ ํ ๋ง์ง๋ง ์์๋ฅผ ์ ์ธํ ์ฑ๋ก ์ฒ์๋ถํฐ ๋๊น์ง ๋ฐ์ดํฐ๋ฅผ ํ์ํ ํ, ๊ฐ์ฅ ํฐ ์๋ฅผ ๋ฆฌ์คํธ์ ๋ง์ง๋ง ์์์ ๊ตํํ๋ค. ๊ตฌํ ์์ฌ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค. (min ์ ๋ ฌ) for i=0 to n: a[i]๋ถํฐ a[n-1]๊น์ง ์ฐจ๋ก๋ก ๋น๊ตํ์ฌ ์ต์๊ฐ์ด ์๋ a[j]๋ฅผ ์ฐพ๋๋ค. a[i]์ a[j]๋ฅผ ๋ฐ๊พผ๋ค. (max ์ ๋ ฌ) for i=0 to n: a[0]๋ถํฐ a[n-i-1]๊น์ง ์ฐจ๋ก๋ก ๋น๊ตํ์ฌ ์ต๋๊ฐ์ด ์๋ ..
์ ๋ ฌ ์ด๋ค ๋ฐ์ดํฐ๋ค์ด ์ฃผ์ด์ก์ ๋ ์ด๋ฅผ ์ ํด์ง ์์๋๋ก ๋์ดํ๋ ๋ฌธ์ ๊ฐ '์ ๋ ฌ'์ด๋ค. ๋ณดํต ์ปดํจํฐ์์๋ ํ์์ ์ํด์ ์ ๋ ฌ์ ์ํํ๋ค. ํ์์ ์ ๋ ฌ์ ํตํด ํ๋ ๊ฒ๋ณด๋ค ๋ ๊ฐ๋ ฅํ ์๊ณ ๋ฆฌ์ฆ์ด ์์ง๋ง, ํ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํด๋๋ฉด ๋ค์๋ถํฐ๋ ์ด์ง ํ์์ด๋ผ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๋ช ๋ฒ์ด๊ณ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์ ์ ์ฉํ๋ค. ๊ทธ๋์ ์ฃผ์ด์ง ๋ฌด์์์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฌํ๋ ๊ฒ์ ๋ง์ ์ฐ๊ตฌ์๋ค์ด ๋ฐฉ๋ฒ์ ๋ด๋์๋๋ฐ, ์์ผ๋ก ์ค๋ช ํ 6๊ฐ์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ๊ทธ ์ธ์๋ ๋ง์ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ด ์กด์ฌํ๋ค. ๋ชจ๋ ์ ๋ ฌ์ ์ค๋ช ์ ์์์ ์์ ๋ก ์ค๋ช ํ ๋ฐ์ดํฐ๋ ๋ค์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ฌด์์๋ก ๋ฐฐ์น๋์ด์๋ 1~7์ ๋ฐ์ดํฐ์ด๋ค. ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ ๋ณต์ก๋๋ ๋น๊ต + ์ด๋์ผ๋ก ์ธก์ ํ๋ค. ํน์ฑ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ๋ฌ ๊ธฐ์ค์ ๋ฐ๋ผ ๋๋ ์ ์๋ค. ์๊ฐ ๋ณต..
๐๋์ ํ๋ก๊ทธ๋๋ฐ ๋์ ํ๋ก๊ทธ๋๋ฐ์ Dynamic Programming ์ฆ, DP๋ผ๊ณ ๋ถ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ๋ฒ์ด๋ค. ๋ณต์กํ ๋ฌธ์ ๋ฅผ ์ ํ์์ผ๋ก ๋ง๋ค์ด ๋ถํ ์ ๋ณตํ ๋, ๋ฐ๋ณต๋ฌธ ๋๋ ์ฌ๊ท๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ ์ด ๊ณผ์ ์์ ๊ณ์ฐ์ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋์ด ์ค๋ณต๋๋ ๊ณ์ฐ์ ํ์ง ์๋๋ก ๋ง๋ค์ด์ค๋ค. ์ด๋ ์ ํ์ ์ด๋ ๊ฒ ๊ฒฐ๊ณผ ๊ฐ์ ์ ์ฅํด๋๋ ๊ฒ์ ๋ฉ๋ชจ์ด์ ์ด์ ์ด๋ผ๊ณ ํ๋๋ฐ, ๋ณดํต ๋ฐฐ์ด์ ํํ๋ก ์ํ๋๋ค. DP ๊ณผ์ ์ ์ฒด ๋ฌธ์ ๋ฅผ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋จ์ํํ๋ค. 1๋ฒ์ ๊ณผ์ ์์ ์ ํ์์ ๋์ถํ๋ค. ์ ํ์์ ์ด์ฉํ์ฌ ๋ฐฐ์ด๋ก ๊ฐ๋จํ ํด๊ฒฐํ ์ ์๋์ง ์๊ฐํ๋ค. bottom-up top-down ์๋ค๋ฉด ์ฌ๊ทํจ์๋ฅผ ๋ง๋ค๊ณ ๋ฉ๋ชจ์ด์ ์ด์ ํ๋ค. ๋ฉ๋ชจ์ด์ ์ด์ ๋ฐฉ์์ ๋ณดํต ๋ฐฐ์ด์ด๋ค. ์ ์ฒด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค. ๋ํ ๋ฌธ์ ํผ๋ณด๋์น ์์ด ๊ตฌํ๊ธฐ ํผ๋ณด๋์น ์์ด..
์ฌ๊ทํธ์ถ ์ฌ๊ทํจ์๋ ํจ์ ๋ด์์ ์๊ธฐ ์์ ์ ๋ค์ ํธ์ถํ๋ ํจ์์ด๋ค. ํ๋ก๊ทธ๋๋ฐํ ๋ ๋ฐ๋ณต๋๋ ์์ ๋ค์ด ๋ํด์๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๊ฑฐ๋ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ํํํ๋ค. ๊ธฐ์ ์ฌ๋ก๋ ๋ ์ด์ ์ชผ๊ฐ์ง์ง ์๋ ๊ฐ์ฅ ์์ ์์ ์ผ๋ก, ์ด์ ๋๋ฌํ์ ๋๋ ์ฌ๊ทํธ์ถ์ ๋ฉ์ถ๊ณ ๋ต์ ๊ณง์ฅ ๋ฐํํด์ผํ๋ค. ๊ธฐ์ ์ฌ๋ก๋ฅผ ์ ํ ๋๋ ๋ชจ๋ ์ฌ๋ก์ ๋ต์ด ๊ธฐ์ ์ฌ๋ก๋ฅผ ์ด์ฉํ์ฌ ๊ณ์ฐ๋ ์ ์๋๋ก ํด์ผํ๋ค. ์์ ํ์ (== Brute Force, Exhaustive search) ์์ ํ์์ ์ปดํจํฐ์ ์ฐ์ฐ๋ฅ๋ ฅ์ ์ด์ฉํ์ฌ ๊ฐ๋ฅํ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ๋์ดํ๋ฉด์ ๋ต์ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ ๋ ฅ์ ํฌ๊ธฐ๊ฐ ์์ ๋ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ฉฐ ๋ ๋น ๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ๊ธฐ๋ฐ์ด ๋๋ค. ๋ต์ ๋ฌด์กฐ๊ฑด ์ฐพ์ ์ ์๋ค๋ ์ฅ์ ์ด ์์ง๋ง, ์ฐพ๋๋ฐ์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค๋ ๋จ์ ์ด ์๋ค..
๋นํธ ์กฐ์ ๊ฐ๋ ๋นํธ(bit)๋ 0๊ณผ 1์ ๊ฐ์ ๊ฐ์ง ์ ์๋ ๋ฐ์ดํฐ์ ๋จ์์ด๋ค. 4bit๋ฅผ ๋ชจ์ ๋จ์๋ฅผ ๋๋ธ(nibble)์ด๋ผ ๋ถ๋ฅด๊ณ , 8bit๋ฅผ ๋ชจ์ ๋จ์๋ฅผ ๋ฐ์ดํธ(byte)๋ผ๊ณ ๋ถ๋ฅธ๋ค. 2byte๋ฅผ ๋ชจ์ ๋จ์๋ ์ผ๋ถ ์ ์ํต์ ๊ธฐ๊ธฐ์์ ์๋(word)๋ผ๊ณ ํ๋ค. ๊ตฌํ C++์์๋ ๋นํธ๋ฅผ ๋ค๋ฃจ๊ธฐ ์ํด์ ์ด๋ผ๋ ํค๋๋ฅผ ํฌํจํด์ ์ฌ์ฉํ๋ค. ์ฐ์ฐ C++์์ ๋นํธ์ฐ์ฐ๋ค์ ์์์ ์ธ๊ธํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฝ๊ฒ ๊ฐ์ ธ๋ค ์ธ ์ ์์ง๋ง, ๊ฐ๋ ๊ณต๋ถ ์ธก๋ฉด์์ ๊ทธ๋ฅ ๊ตฌํ๋ ํ๊ณ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ๋ฒ๋ ์ตํ๋๋ คํ๋ค. ๋ฉ๋ชจ๋ฆฌ ์์ ๋ณ์๋ฅผ ์ ์ฅํ๋ ๊ฒ์ด 1byte ๋จ์๋ก ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์, bit ๋จ์์ ์๋ฃํ์ ์๋ค. ๋ค๋ง bool ํ์ ๋ฉ๋ชจ๋ฆฌ ์์์ 1byte๋ฅผ ์ฐจ์งํ์ง๋ง ๊ฐ๋ฅํ ๊ฐ์ด true ํน์ false ๋ฐ์ ์์ผ๋ฏ๋ก ์ด๋ฅผ ์ด์ฉ..
๊ตฌ์กฐ์ฒด ๊ตฌ์กฐ์ฒด๋ ๋ฐฐ์ด๊ณผ๋ ๋ค๋ฅด๊ฒ ๋ค๋ฅธ ์๋ฃํ์ ๋ณ์๋ค์ ๋ชจ์์ ํ๋์ ๋จ์๋ก ํํํ๋ ์๋ฃํ์ด๋ค. ์ฉ๋ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ ๊ทธ๋ํ์์ ๋ ธ๋๋ฅผ ๋ํ๋ผ ๋, ๋ฐ์ดํฐ์ ํฌ์ธํฐ ๋ถ๋ถ์ด ์กด์ฌํ๋ค. ๊ตฌ์กฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฐ์ดํฐ์ ํฌ์ธํฐ ๋ถ๋ถ์ ๊ฐ๊ฐ ๊ตฌ์ฑํ์ฌ ํ๋์ ์๋ฃํ์ผ๋ก ๋ง๋ค์ด์ค ์ ์๋ค. ์ด ๋, ํฌ์ธํฐ๋ ํด๋น ๊ตฌ์กฐ์ฒด์ ํฌ์ธํฐํ์ด๋ฏ๋ก ์ด ๊ตฌ์กฐ์ฒด๋ ์์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด๊ฐ ๋๋ค. C++ struct Node { int value; Node* pointer; // ์์ฒด ์ฐธ์กฐ ๊ตฌ์กฐ์ฒด }; int main() { Node A; // ๊ตฌ์กฐ์ฒด ์ ์ธ A.value = 4; Node* Ap = A.pointer; // . ์ฐ์ฐ์๋ก ์ ๊ทผ int Avalue = A.value; Ap = A; Avalue = Ap->value; // ํฌ์ธํฐ๋ก ..
ํ ์ฉ๋ ๊ตฌํ ์ข ๋ฅ ์ฐ์ฐ ์ ๋ ฌ ํ ํ์ ์ถ์์ ์๋ฃํ์ธ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ์ด๋ค. partial-ordering (๋ถ๋ถ ์ ๋ ฌ)์ ๋ง์กฑํ๋ left-complete binary tree (์ข์ธก ์์ ์ด์ง ํธ๋ฆฌ) ์ด๋ค. ๋ถ๋ถ ์ ๋ ฌ์ ๋ง์กฑํ๋ค๋ ๋ง์ '๋ถ๋ชจ ๋ ธ๋์ ์์๋ ธ๋' ๊ฐ์๋ ํน์ ๋์๊ด๊ณ ์ฑ๋ฆฝํ์ง๋ง, 'ํ์ ๋ ธ๋'๊ฐ์๋ ํด๋น ๋์๊ด๊ณ๊ฐ ์ฑ๋ฆฝํ์ง ์๋๋ค๋ ๋ป์ด๋ค. ์ด์ง ํ์ ํธ๋ฆฌ์์๋ ์ค๋ณต๋ ๊ฐ์ ํ์ฉํ์ง ์์ง๋ง ํ ํธ๋ฆฌ์์๋ ํ์ฉํ๋ค. ์ฉ๋ ํ์ ์ถ์์ ์๋ฃํ์ธ ์ฐ์ ์์ ํ๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ๋ง๋ค์ด์ง ์๋ฃ๊ตฌ์กฐ์ด๋ค. ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํ๋ฉด ์ฝ์ ๊ณผ ์ญ์ ์ฐ์ฐ ์ค ํ๋๊ฐ O(n)์ผ ์ ๋ฐ์ ์๋ค. ํ์ง๋ง ํ์ ์ด์ฉํ๋ฉด ๊ฐ์ฅ ํฐ ๊ฐ์ด๋ ๊ฐ์ฅ ์์ ๊ฐ์ ๋ ๋ค O(logn)๋ง์ ๋น ..
Comment