๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (208)
๐ป
ํ์์ ์๊ณ ๋ฆฌ์ฆ์ด๋? ์ด๋ค ์ ํ์ ํด์ผํ ๋ ๊ทธ ๋น์์ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ ํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋งํ๋ค. - ์๊ฐ์ ์ ํ์ ๊ทธ ๋น์์ ์ต์ ์ ์ ํ์ด๋ค. ์ด๋ฐ ์ ํ๋ค์ด ๋ชจ์ฌ ์ต์ข ์ ์ธ ํด๋ต์ ์ป๋๋ค๊ณ ํ์ฌ ์ต์ข ํด๋ต์ด ์ต์ ์ด๋ผ๋ ๋ณด์ฅ์ ์๋ค. ๋ฐ๋ผ์, ํ์์ ์๊ณ ๋ฆฌ์ฆ์ ํด๋ต์ ์ป์ ํ์ ์ด ํด๋ต์ด ์ต์ ์ธ์ง ๊ฒ์ฌํด์ผ ํ๋ค. - ์๊ณ ๋ฆฌ์ฆ ์ค๊ณ ์ ์ฐจ 1๋จ๊ณ) ์ ์ ๊ณผ์ (selection procedure) : ํ์ฌ ์ํ์์ ๊ฐ์ฅ ์ข์ ์ ํ์ด๋ผ๊ณ ์๊ฐ๋๋ ํด๋ต์ ์ฐพ์์ ํด๋ต๋ชจ์(solution set)์ ํฌํจ์ํจ๋ค. 2๋จ๊ณ) ์ ์ ์ฑ๊ฒ์ฌ(feasibility test) : ์๋ก ์ป์ ํด๋ต๋ชจ์์ด ์ ์ ํ์ง๋ฅผ ๊ฒฐ์ ํ๋ค. 3๋จ๊ณ) ํด๋ต ๊ฒ์ฌ(solution check) : ์๋ก ์ป์ ํด๋ต๋ชจ์์ด ์ต์ ์ ํด์ธ์ง ๊ฒฐ์ ํ..
์ด๋ถ ํ์(์ด์งํ์) ์๊ณ ๋ฆฌ์ฆ ์ ์ฐพ์ ๋ฒ์๋ฅผ ๋ฐ์ผ๋ก ๋๋ ์ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. ์ฒ์ ์ค๊ฐ์ ๊ฐ์ ์์์ ๊ฐ์ผ๋ก ์ ํํ์ฌ, ๊ทธ ๊ฐ๊ณผ ํค๊ฐ์ ํฌ๊ณ ์์์ ๋น๊ตํ๋ ๋ฐฉ์์ด๋ค. ์ฒ์ ์ ํํ ์ค๊ฐ๊ฐ์ด ๋ง์ฝ ์ฐพ๋ ๊ฐ๋ณด๋ค ํฌ๋ฉด ์ต๋๊ฐ์ด ๋๊ณ , ์์ผ๋ฉด ์ต์๊ฐ์ด ๋๋ค. - ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ์ ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ด๋ค. - ๋จ, ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒฝ์ฐ์๋ง ์ ์ฉํ ์ ์๋ค. - ์ต์ ์ ๊ฒฝ์ฐ๋ ์ฐพ์ผ๋ ค๋ ํค๊ฐ์ด ๋ฐฐ์ด์ ์กด์ฌํ์ง ์์ ๋์ด๋ค. - ์๊ฐ๋ณต์ก๋๋ O(logN) ์ด๋ค. ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ int BinarySearch(int arr[], int length, int key){ int first = 0; int last = length - 1; int mid = 0; while(first key){ // ์ค๊ฐ๊ฐ์ด ์ฐพ์ผ๋ ค..
๋ถํ ์ ๋ณต๋ฒ์ด๋? ๋ฌธ์ ์ ์ฌ๋ก๋ฅผ 2๊ฐ ์ด์์ ๋ ์์ ์ฌ๋ก๋ก ๋๋์ด(divide) ๊ฐ ์์ ์ฌ๋ก์ ๋ํ ํด๋ต(conquer)์ ์ฝ๊ฒ ์ป์ ์ ์์ผ๋ฉด ์ด๋ค์ ํด๋ต์ ๊ฒฐํฉ(combine)ํ์ฌ ์๋ฌธ์ ์ ํด๋ต์ ์ป๋ ๋ฐฉ์. - ๋ฌธ์ ๋ฅผ ๋๋๋ ๊ณผ์ ์ ํด๋ต์ ์ฝ๊ฒ ์ป์ ๋๊น์ง ๋ฐ๋ณต์ ์ผ๋ก ์ ์ฉํ๋ค. - ํํฅ์(top-down) ์ ๊ทผ ๋ฐฉ๋ฒ์ด๋ค. ๋ถํ (Divide) : ํด๊ฒฐํ๊ธฐ ์ฝ๋๋ก ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๊ฐ์ ์์ ๋ถ๋ถ์ผ๋ก ๋๋๋ค. ์ ๋ณต(Conquer): ๋๋ ์์ ๋ฌธ์ ๋ฅผ ๊ฐ๊ฐ ํด๊ฒฐํ๋ค. ํตํฉ(Combine): (ํ์ํ๋ค๋ฉด) ํด๊ฒฐ๋ ํด๋ต์ ๋ชจ์๋ค. - ๋ณดํต ์ฌ๊ท ํ๋ก์์ ๋ก ๋จผ์ ํด๊ฒฐํ ๋ค์์ ๋ณด๋ค ํจ์จ์ ์ธ ๋ฐ๋ณต ํ๋ก์์ ๊ฐ ์๋์ง ๊ฒํ ํ๋ค. - ๋ํ์ ์ธ ์๊ณ ๋ฆฌ์ฆ ์ด์ง ๊ฒ์(BinarySearch) ํฉ๋ณ ์ ๋ ฌ(MergeSort) ..
๋ฌธ์ N๊ฐ์ ์ ์ A[1], A[2], …, A[N]์ด ์ฃผ์ด์ ธ ์์ ๋, ์ด ์์ X๋ผ๋ ์ ์๊ฐ ์กด์ฌํ๋์ง ์์๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์์ฐ์ N(1≤N≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ N๊ฐ์ ์ ์ A[1], A[2], …, A[N]์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M(1≤M≤100,000)์ด ์ฃผ์ด์ง๋ค. ๋ค์ ์ค์๋ M๊ฐ์ ์๋ค์ด ์ฃผ์ด์ง๋๋ฐ, ์ด ์๋ค์ด A์์ ์กด์ฌํ๋์ง ์์๋ด๋ฉด ๋๋ค. ๋ชจ๋ ์ ์๋ค์ ๋ฒ์๋ int ๋ก ํ๋ค. ์ถ๋ ฅ M๊ฐ์ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค. ์กด์ฌํ๋ฉด 1์, ์กด์ฌํ์ง ์์ผ๋ฉด 0์ ์ถ๋ ฅํ๋ค. ์์ ์ ๋ ฅ1 5 4 1 5 2 3 5 1 3 7 9 5 ์์ ์ถ๋ ฅ1 1 1 0 0 1 ์๊ฐ ์ฒ์์๋ ๋จ์ํ๊ฒ ํ๋์ฉ ์ ๋ ฅ๋ฐ์ ์๋ฅผ ๋ฐฐ์ด์์ ์๋์ง ์ฒดํฌํด์ ์์ผ๋ฉด true๋ฅผ ๋ฆฌํดํ..
๋ฌธ์ ๋ ์ผ ๋ก๋๋ {1, 2, ..., 49}์์ ์ 6๊ฐ๋ฅผ ๊ณ ๋ฅธ๋ค. ๋ก๋ ๋ฒํธ๋ฅผ ์ ํํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ฐ์ฅ ์ ๋ช ํ ์ ๋ต์ 49๊ฐ์ง ์ ์ค k(k>6)๊ฐ์ ์๋ฅผ ๊ณจ๋ผ ์งํฉ S๋ฅผ ๋ง๋ ๋ค์ ๊ทธ ์๋ง ๊ฐ์ง๊ณ ๋ฒํธ๋ฅผ ์ ํํ๋ ๊ฒ์ด๋ค. ์๋ฅผ ๋ค์ด, k=8, S={1,2,3,5,8,13,21,34}์ธ ๊ฒฝ์ฐ ์ด ์งํฉ S์์ ์๋ฅผ ๊ณ ๋ฅผ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ด 28๊ฐ์ง์ด๋ค. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34]) ์งํฉ S์ k๊ฐ ์ฃผ์ด์ก์ ๋, ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ ๋ ฅ์ ์ฌ๋ฌ ๊ฐ์ ํ ์คํธ ์ผ์ด์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค๋ ํ ์ค๋ก ์ด๋ฃจ์ด์ ธ ์๋ค. ์ฒซ ..
๋ฌธ์ ์์ ๋ฅผ ๋ณด๊ณ ๊ท์น์ ์ ์ถํ ๋ค์ ๋ณ์ ์ฐ์ด ๋ณด์ธ์. ์ ๋ ฅ ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ ํญ์ 3์ ์ ๊ณฑ๊ผด์ธ ์์ด๋ค. (3, 9, 27, ...) (N=3k, 1 ≤ k [0][1] = ' * ' Star(0,2,1) -> [0][2] = ' * ' -------------------------------- ์ฒซ์งธ์ค ***์์ฑ Star(1,0,1) -> [1][0] = ' * ' Star(1,1,1) -> Star(1,2,1) -> [1..
๋ฌธ์ ์ด๋ค ์์ฐ์ N์ด ์์ ๋, ๊ทธ ์์ฐ์ N์ ๋ถํดํฉ์ N๊ณผ N์ ์ด๋ฃจ๋ ๊ฐ ์๋ฆฌ์์ ํฉ์ ์๋ฏธํ๋ค. ์ด๋ค ์์ฐ์ M์ ๋ถํดํฉ์ด N์ธ ๊ฒฝ์ฐ, M์ N์ ์์ฑ์๋ผ ํ๋ค. ์๋ฅผ ๋ค์ด, 245์ ๋ถํดํฉ์ 256(=245+2+4+5)์ด ๋๋ค. ๋ฐ๋ผ์ 245๋ 256์ ์์ฑ์๊ฐ ๋๋ค. ๋ฌผ๋ก , ์ด๋ค ์์ฐ์์ ๊ฒฝ์ฐ์๋ ์์ฑ์๊ฐ ์์ ์๋ ์๋ค. ๋ฐ๋๋ก, ์์ฑ์๊ฐ ์ฌ๋ฌ ๊ฐ์ธ ์์ฐ์๋ ์์ ์ ์๋ค. ์์ฐ์ N์ด ์ฃผ์ด์ก์ ๋, N์ ๊ฐ์ฅ ์์ ์์ฑ์๋ฅผ ๊ตฌํด๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์ ๋ ฅ ์ฒซ์งธ ์ค์ ์์ฐ์ N(1 ≤ N ≤ 1,000,000)์ด ์ฃผ์ด์ง๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ๋ต์ ์ถ๋ ฅํ๋ค. ์์ฑ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ 0์ ์ถ๋ ฅํ๋ค. ์์ ์ ๋ ฅ1 216 ์์ ์ถ๋ ฅ1 198 ์๊ฐ ์ฒ์์ ๋ฌธ์ ๋ฅผ ๋ดค์๋ ๋๋์ ์ผ๋ก ํ๋ฆด ๊ฑฐ ๊ฐ์๋ค..
๋ฌธ์ ์ด ๋ฌธ์ ๋ ์ฌ๋ฌ๋ถ์ด ์ฌ์ฉํ๋ ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์๊ฐ ๋ณต์ก๋ ์์ผ๋ก ์ถฉ๋ถํ ๋น ๋ฅธ์ง ํ ์คํธํ๋ ๋ฌธ์ ์ด๋ค. ์ ๋ ฅ์ ๋ฒ์๋ฅผ ์ ์ธํ๋ฉด 10845 (ํ) ๋ฌธ์ ์ ๊ฐ๋ค. ์ ์๋ฅผ ์ ์ฅํ๋ ํ๋ฅผ ๊ตฌํํ ๋ค์, ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ๋ช ๋ น์ ์ฒ๋ฆฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ช ๋ น์ ์ด ์ฌ์ฏ ๊ฐ์ง์ด๋ค. push X: ์ ์ X๋ฅผ ํ์ ๋ฃ๋ ์ฐ์ฐ์ด๋ค. pop: ํ์์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ๋นผ๊ณ , ๊ทธ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค. size: ํ์ ๋ค์ด์๋ ์ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค. empty: ํ๊ฐ ๋น์ด์์ผ๋ฉด 1, ์๋๋ฉด 0์ ์ถ๋ ฅํ๋ค. front: ํ์ ๊ฐ์ฅ ์์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ํ์ ๋ค์ด์๋ ์ ์๊ฐ ์๋ ๊ฒฝ์ฐ์๋ -1์ ์ถ๋ ฅํ๋ค. back: ํ์ ๊ฐ์ฅ ๋ค์ ์๋ ์ ์๋ฅผ ์ถ๋ ฅ..