๐ Algorithm/๐ ๊ฐ๋ ์ ๋ฆฌ5 [๊ฐ๋ ์ ๋ฆฌ] ํฌ ํฌ์ธํฐ ์ต๊ทผ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฉด์ ์๊ฐ ์ด๊ณผ์ ์์ธ์ฒ๋ฆฌ๋ก ์ธํด ์๋นํ ์ ๋ฅผ ๋จน์๋ ๋ฌธ์ ๊ฐ ์๋ค. ํด๋น ๋ฌธ์ ์ ๋ค๋ฅธ ํ์ด๋ฅผ ์ฐพ์๋ณด๋ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ๊ฐ๋จํ๊ฒ ๊ตฌํํ ์ ์๋ค๋ ์ ์ ์์๊ณ ์ด์ ๋ํด ์ ๋ฆฌํด๋ณด๊ณ ์ ํ๋ค. ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ํ๋์ ๋ฐฐ์ด์์ ๋ ๊ฐ์ ์ธ๋ฑ์ค ํฌ์ธํฐ๋ฅผ ์กฐ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๋ฏธํ๋ค. ๋ฌธ์ ๋ฅผ ์์๋ก ๋ค์ด์ ์ค๋ช ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค. ๋ฐฑ์ค - 2467. ์ฉ์ก ์ด ๋ฌธ์ ์์ 0๊ณผ ๊ฐ์ฅ ๊ฐ๊น์ด ๊ฑฐ๋ฆฌ์ ํฉ์ ๊ฐ์ง๋ ๋ ์์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ์ ๋จผ์ O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ ๋ฐฉ๋ฒ์ด ์กด์ฌํ๋ค. ํ์ง๋ง ๋ฌธ์ ์ฒ๋ผ N์ ํฌ๊ธฐ๊ฐ O(N^2)์ผ๋ก ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ์ ํฌ ํฌ์ธํฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ๋ฉด O(N)์ ํด๋น ๊ฐ์ ๊ตฌํ ์ ์๋ค. (์ด ๋ฌธ์ ๋ ์ ๋ ฌ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ์ ์ฒด ๋ฌธ์ ์ ์๊ฐ๋ณต์ก๋๋ O(.. 2021. 4. 1. [๊ฐ๋ ์ ๋ฆฌ] ์ต๋จ ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ - ๋ค์ต์คํธ๋ผ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์ ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ๋ ๋๋ถ๋ถ BFS๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ํ์ง๋ง, ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์กด์ฌํ๋ค๋ฉด BFS๊ฐ ์๋ ์ต๋จ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ ๊ทผํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ค์น ๊ทธ๋ํ์ ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ด ์กด์ฌํฉ๋๋ค. ๋ ์ ์ ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ํ๋์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊ณผ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ํ๋์ ์ ์ ์ผ๋ก ๊ฐ๋ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ์ ๊ฐ์ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์ - ํ๋ก์ด๋-์์ฌ ์ ๋ฒ ๊ธ์์๋ 4๋ฒ ์ ํ์ ํด๊ฒฐํ๊ธฐ ์ํ ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด์์ต๋๋ค. ์ด๋ฒ ๊ธ์์๋ 2๋ฒ ์ ํ์ ํด๊ฒฐํ ์ ์๋ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค. ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋จํ๊ฒ ์ค๋ช ํ๋ฉด ์์ ์ ์ ์์ ๊ฑฐ๋ฆฌ๊ฐ ์ต์์ธ ์ ์ ์ ์ ํํด .. 2021. 3. 22. [๊ฐ๋ ์ ๋ฆฌ] ์ต๋จ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ - ํ๋ก์ด๋ ์์ฌ ๊ฐ์ค์น๊ฐ ์๋ ๊ทธ๋ํ์ ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ๋ ๋๋ถ๋ถ BFS๋ก ํด๊ฒฐํ ์ ์์ต๋๋ค. ํ์ง๋ง, ๊ฐ์ ์ ๊ฐ์ค์น๊ฐ ์กด์ฌํ๋ค๋ฉด BFS๊ฐ ์๋ ์ต๋จ๊ฑฐ๋ฆฌ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ ๊ทผํด์ผ ํฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ค์น ๊ทธ๋ํ์ ์ต๋จ๊ฑฐ๋ฆฌ ๋ฌธ์ ๋ ๋ค์๊ณผ ๊ฐ์ ์ ํ์ด ์กด์ฌํฉ๋๋ค. ๋ ์ ์ ๊ฐ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ํ๋์ ์ ์ ์์ ๋ค๋ฅธ ๋ชจ๋ ์ ์ ๊ณผ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ํ๋์ ์ ์ ์ผ๋ก ๊ฐ๋ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ์ ๊ฐ์ ๋ชจ๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ด ์ค 4๋ฒ์ ํด๊ฒฐํ๊ธฐ ์ํ ํ๋ก์ด๋-์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ํด ์์๋ณด๊ณ ์ ํฉ๋๋ค. ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ ํ๋ก์ด๋ ์์ฌ ์๊ณ ๋ฆฌ์ฆ์ ๋ชจ๋ ์ ์ ๊ฐ์ ์ต๋จ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋๋ค. ์์ผ๋ก์ ์ค๋ช ์์ ์ฌ์ฉ๋ ๊ทธ๋ํ๋ ๋ค์๊ณผ ๊ฐ์ ๊ฐ์ค์น๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ด๊ธฐ ๊ฐ์ค์น ๊ฐ์ ์ ์ฅํ๋ .. 2021. 3. 16. [๊ฐ๋ ์ ๋ฆฌ] ์ค์ํ ์๊ณ ๋ฆฌ์ฆ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ด๋ ํน์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ ๋ ฌ๋ ์์๋๋ก ๋ฌธ์ ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํด์ผํ๋ ๋ฌธ์ ๋ค์ ํน์ง์ ๋ฌํํ ๋ฐฉ๋ฒ (์ผ๋ฐ์ ์ผ๋ก O(N^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋ ๋ฐฉ๋ฒ)์ผ๋ก๋ ํด๊ฒฐ์ด ๋ถ๊ฐ๋ฅํ๋ฉฐ, DP๋ฅผ ์ฌ์ฉํ๊ธฐ์๋ ๋ฉ๋ชจ์ด์ ์ด์ ํด์ผํ ์๊ฐ ๋๋ฌด ๋ง์ ๊ฒฝ์ฐ๊ฐ ์ผ๋ฐ์ ์ด๋ค. ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๋ฌธ์ ๋ฅผ ํ ๊ฒฝ์ฐ, ํด๋น ์๊ฐ ๋ณต์ก๋๋ ์ ๋ ฌ์์ ๋ฐ์ํ๋ O(NlogN)์์์ ํด๊ฒฐ๋๋ค. ๋ฐฑ์ค - 8982. ์ฌ๋ฅ๊พผ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๊ฒ๋๋ฉด O(N*M)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ฒ ๋๊ณ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ๊ทธ๋ ๋ค๊ณ ์ขํ์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ตํ ์๋ ์๊ธฐ ๋๋ฌธ์ ์ค์ํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ํด๊ฒฐํด์ผ ํ๋ค. ๋จผ์ , ์ฌ๋์ ๋๋ฌผ์ ๋ชจ๋ x์ถ ์์๋ก ์ ๋ ฌํ๊ณ ๋๋ฌผ์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฅ์ด ๊ฐ๋ฅํ์ง ํ์ธํ๋ค. ํ์ธ ๊ณผ์ ์ ๋.. 2021. 2. 26. [๊ฐ๋ ์ ๋ฆฌ] ์์ด, ์กฐํฉ, ๋ถ๋ถ์งํฉ ์ด๋ฒ ๊ธ์์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ ์์ ํ์ ๊ธฐ๋ฒ์์ ์์ด๊ณผ ์กฐํฉ ๊ทธ๋ฆฌ๊ณ ๋ถ๋ถ์งํฉ์ ๋ํ ๊ตฌํ ๋ฐฉ๋ฒ์ ์ ๋ฆฌํด๋ณด๊ณ ์ ํฉ๋๋ค. ์์ด ์์ด์ N๊ฐ์ ์์ ์ค์์ R๊ฐ์ ์์๋ฅผ ํตํด ์์๋ฅผ ๊ฐ์ง ๋ถ๋ถ์งํฉ์ ๋ง๋๋ ๊ฒฝ์ฐ์ ์์ ๋๋ค. ์์ด์ ์ฌ๊ท ํจ์๋ฅผ ํตํด ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค. ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด๋ฒ ์์์ ์์๋ฅผ ์ฌ์ฉํ๋์ง ์ฒดํฌํ๋ ๊ณผ์ ์ด ํ์ํ๋ฐ, ์ด ๊ณผ์ ์ boolean ๋ฐฐ์ด์ ํตํด ์ฒดํฌํ๊ฑฐ๋ ๋นํธ ๋ง์คํน์ ํตํด ๊ตฌํํ ์ ์์ต๋๋ค. Boolean ๋ฐฐ์ด ์ฌ์ฉ permutationByBoolean(0); static void permutationByBoolean(int cnt) { if (cnt == N) { printPermutation(); return; } for (int i.. 2021. 2. 19. ์ด์ 1 ๋ค์