IT ๊ณต๋ถ91 ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ (2. ๋ฒจ๋ง-ํฌ๋ ์๊ณ ๋ฆฌ์ฆ) ๐ฉ๐ป ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ด๋?๊ฐ์ค ๊ทธ๋ํ ์์ ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ผ๋ก์ง๋ ๊ฒฝ๋ก ํ์, ๋คํธ์ํฌ ๊ตฌ์ถ์ ๋๋ ๋น์ฉ์ ์ต์ํ ํ๋๋ฐ ์ฌ์ฉํ๋ค. โจ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ๋ค์ต์คํธ๋ผ๋ฒจ๋ง-ํฌ๋ํ๋ก์ด๋-์์ ์์ ์ธ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๊ฐ ํด๊ฒฐํ ์ ์๋ ์ํฉ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋๋ ๋ค๋ฅด๋ค. โ๏ธ ๋ฒจ๋ง - ํฌ๋ (Ballman-Ford)์์ ๊ฐ์ ์ด ํฌํจ๋์ด ์์ด๋ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์์but, ์์ ์ฌ์ดํด์ด ์์ผ๋ฉด ์ ์ ๋์ํ์ง ์์๋งค๋ฒ ๋ชจ๋ ๊ฐ์ ์ ํ์ธํ๊ธฐ ๋๋ฌธ์ ๋ค์ต์คํธ๋ผ์ ๋นํด ๋๋ฆผ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋ : O(VE)๋ฐ๋ผ์ ์์๊ฐ์ ์ด ํฌํจ๋์ด ์๋ ๊ฒฝ์ฐ ๋ฒจ๋ง-ํฌ๋๋ฅผ ์ฌ์ฉํด์ผํ์ง๋ง, ์๋ ๊ฒฝ์ฐ๋ ๋ค์ต์คํธ๋ผ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ๋ซ๋ค. ๐ซ ์์ ๊ฐ์ ์ด ํฌํจ๋ ๊ฐ์ค๊ทธ๋ํ์์ .. 2024. 8. 6. ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ (1. ๋ค์ต์คํธ๋ผ) ๐ฉ๐ป ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ์ด๋?๊ฐ์ค ๊ทธ๋ํ ์์ ๋ ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๋ ๊ฐ์ฅ ์งง์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ผ๋ก์ง๋ ๊ฒฝ๋ก ํ์, ๋คํธ์ํฌ ๊ตฌ์ถ์ ๋๋ ๋น์ฉ์ ์ต์ํ ํ๋๋ฐ ์ฌ์ฉํ๋ค. โจ ์ต๋จ ๊ฒฝ๋ก ์๊ณ ๋ฆฌ์ฆ ์ข ๋ฅ๋ค์ต์คํธ๋ผ๋ฒจ๋ง-ํฌ๋ํ๋ก์ด๋-์์ ์์ ์ธ ๊ฐ์ง ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๊ฐ ํด๊ฒฐํ ์ ์๋ ์ํฉ์ด ์กฐ๊ธ์ฉ ๋ค๋ฅด๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋๋ ๋ค๋ฅด๋ค. โ๏ธ ๋ค์ต์คํธ๋ผ (Dijkstra)์ถ๋ฐ์ ์์ ๋ชฉํ์ ๊น์ง์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ์๊ณ ๋ฆฌ์ฆํ ๋ ธ๋์์ ๋ค๋ฅธ ๋ชจ๋ ๋ ธ๋๋ก์ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ ์ ์์๊ฐ์ ์ ์์ ๊ฐ์ค์น๊ฐ ์์ด์ผ ํ๋ค.๊ทธ๋ฆฌ๋ + DPํํ์๊ณ ๋ฆฌ์ฆ ๋ณต์ก๋ : O(ElogV) ๐ซ ๋ค์ต์คํธ๋ผ ์๊ณ ๋ฆฌ์ฆ Flow๋ค์๊ณผ ๊ฐ์ด ๋ ธ๋์ ๊ฐ์ ๊ฐ์ค์น ์ ๋ณด๊ฐ ์์๋,: A ๋ ธ๋์์ ๋ค๋ฅธ ๋ ธ๋๋ค์ ๋ํ ์ต๋จ ๊ฒฝ๋ก๋ฅผ ๊ตฌํ๋ ๊ฒ์ ์๋์ ๊ฐ๋ค... 2024. 8. 6. ๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ (Backtracking) ๐ฉ๐ป ๋ฐฑํธ๋ํน (Backtracking) ์ด๋?โจ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ฉฐ ์ต์ ํด๋ฅผ ๊ตฌํ๋ ๊ณผ์ ํด์ ์ ๋งํ์ง ์์ ์ชฝ์ ๋ ์ด์ ๊ตฌํ์ง ์๋ ๋ฐฉ๋ฒ(full search = brute force = ์์ ํ์)๋๋ค๋ฆฌ๋ ๋๋๋ ค๋ณด๊ณ ๊ฐ๋ค! ๋ผ๋ ๋๋์ ์๊ณ ๋ฆฌ์ฆ ์ฌ๊ทํจ์๋ฅผ ๋ง์ด ์ด์ฉ, DFS์ ๋ง์ด ์์ฌ ๋์จ๋ค. โ๏ธ ๋ฐฑํธ๋ํน์์์ ์ฉ์ด์ ๋ง (Promising)ํด๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ์ ๋งํ๋ค๊ณ ํจ๊ฐ์ง ์น๊ธฐ (Pruning)ํด๊ฐ ๋ ๊ฐ๋ฅ์ฑ์ด ์๋ ๊ฒฝ์ฐ ํด๋น ๋ ธ๋๋ฅผ ์ ์ธ ํ๋ ๊ฒ๋ฐฑํธ๋ํน (Backtracking)์ ๋งํ์ง ์์ ์ชฝ์ผ๋ก ๊ฐ์ง ์๊ณ ๋๋์ ์ค๋ ๊ฒ โ๏ธ ๋ฐฑํธ๋ํน ์์โจ N-Queen ๋ฌธ์ : N x N ์ฒด์คํ์์ ํธ N๊ฐ๋ฅผ ์๋ก ๊ณต๊ฒฉํ ์ ์๋๋ก ๋ฐฐ์นํ๋ ๊ฒฝ์ฐ์ ์(๋ฃฐ : ํธ์ ๊ฐ๋ก, ์ธ.. 2024. 8. 4. ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ โจDP (Dynamic Programming) ๐ฉ๐ป ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ (DP) ๋?๋์ ๊ณํ๋ฒ์ด๋, ํฐ ๋ฌธ์ ๋ฅผ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋ ํ ๋ต์ ์ฐพ์๊ฐ๋ ๊ณผ์ ์์, ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๊ณ "์ฌํ์ฉ"ํ๋ฉฐ ๋ฌธ์ ์ ๋ต์ ๊ตฌํ๋ ๋ฐฉ์ ์ค๊ฐ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์but, ํ ๋ฒ ๊ณ์ฐํ ๋ถ๋ถ์ ๋ค์ ๊ณ์ฐํ์ง ์์ ์๋๊ฐ ๋น ๋ฅด๋ค. DP๋ฅผ ์ด์ฉํ์ฌ ์๊ณ ๋ฆฌ์ฆ์ ํ๋ฉด ๋ฐํ์์๋ฌ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. โ๏ธ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ๊ณผ์ ์ฐจ์ด์ ๋ถํ ์ ๋ณต๊ณผ์ ์ฐจ์ด๋ถํ ์ ๋ณต์ ๋ถ๋ถ ๋ฌธ์ ๊ฐ ์ค๋ณต๋์ง ์๋๋ค.but, DP๋ ๋ถ๋ถ ๋ฌธ์ ๊ฐ ์ค๋ณต๋์ด์ ์ฌํ์ฉํ์ฌ ์ฌ์ฉํ๋ค.๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ๊ณผ์ ์ฐจ์ด๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์๊ฐ์ ์ต์ ์ ๊ตฌํ๋ ๋ฐฉ์์ด๋ค. ์ฆ, ๊ทผ์ฌ์น์ด๋ค.but, DP๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ํ์ธ ํ ์ต์ ํด๋ฅผ ๊ตฌํ๋ ๋ฐฉ์์ด๋ค.* ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ ์๋ ๋ฌธ์ .. 2024. 8. 2. ๋ถํ ์ ๋ณต ์๊ณ ๋ฆฌ์ฆ (Divide and Conquer) ๐ฉ๐ป ๋ถํ ์ ๋ณต ์ด๋?ํฐ ๋ฌธ์ ๋ฅผ ์์ ๋ถ๋ถ ๋ฌธ์ ๋ก ๋๋์ด ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ด๋ค.ex) ํฉ๋ณ ์ ๋ ฌ, ํต ์ ๋ ฌ, ์ด์ง ๊ฒ์ ๋ฑ ๋ถํ ์ ๋ณต์ ๊ณผ์ ์ ์๋์ ๊ฐ๋ค.๋ฌธ์ ๋ฅผ ํ๋ ์ด์์ ์์ ๋ถ๋ถ๋ค๋ก ๋ถํ ํ๋ค.๋ถ๋ถ๋ค์ ๊ฐ๊ฐ ์ ๋ณตํ๋ค.๋ถ๋ถ๋ค์ ํด๋ต์ ํตํฉํ์ฌ ์๋ ๋ฌธ์ ์ ๋ต์ ๊ตฌํ๋ค. โ๏ธ ๋ถํ ์ ๋ณต์ ์ฅ ๋จ์ ์ฅ์ : ๋ฌธ์ ๋ฅผ ๋๋์ด ์ฒ๋ฆฌํ๋ฉฐ ์ด๋ ค์ด ๋ฌธ์ ํด๊ฒฐ ๊ฐ๋ฅ๋ณ๋ ฌ ์ฒ๋ฆฌ์ ์ด์ ์ด ์์ (์๋ก ์ํฅ์ ๋ผ์น์ง ์๊ณ , ๊ฐ๊ฐ์ ํ๋ก์ธ์ฑ์ ๋๋ฆด ์ ์๋ ๊ตฌ์กฐ)๋จ์ :๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ์ฌ์ฉ(์ฌ๊ท ํธ์ถ ๊ตฌ์กฐ) โ๏ธ ๋ถํ ์ ๋ณต ์์๊ณ์ ๋ฐ์ผ๋ก ์๋ผ๊ฐ๋ฉฐ ๋ชจ๋ ๋ถํ ์ด ๋๋ฉด ์กฐ๊ฑด์ ๋ง๋ ๊ฐ์ ์ฐพ๊ณ ์ฌ๊ท์ ์ผ๋ก ์ต์ข ๋ต์ ์ฐพ์๊ฐ๋ค.public static int getMax(int[] arr, int left, int right){ in.. 2024. 8. 2. ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (Greedy Algorithm) ๐ฉ๐ป ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ (Greedy Algorithm) ์ด๋?๋งค ์๊ฐ ํ์ฌ ๊ธฐ์ค์ผ๋ก ์ต์ ์ ๋ต์ ์ ํํด ๋๊ฐ๋ ๊ธฐ๋ฒ๋น ๋ฅด๊ฒ ๊ทผ์ฌ์น๋ฅผ ๊ณ์ฐํ ์ ์๋ค.ํ์ง๋ง ๊ฒฐ๊ณผ์ ์ผ๋ก ์ต์ ํด๊ฐ ์๋ ์ ์๋ค. โ๏ธ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์์1) Activity Select ProblemN๊ฐ์ ํ๋๊ณผ ๊ฐ ํ๋์ ์์/ ์ข ๋ฃ ์๊ฐ์ด ์ฃผ์ด์ก์ ๋,ํ ์ฌ๋์ด ์ต๋ํ ๋ง์ด ํ ์ ์๋ ํ๋์ ์ ๊ตฌํ๊ธฐ: ๋งค ์๊ฐ ์ ํํ ์ ์๋ ๊ฒ ์ค์ ์ต์ ์ ์ ํ! โจbut, ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ํญ์ ์ต์ ํด๋ฅผ ์ฃผ์ง ์๋๋ค. ์๋์ ์ฌ์ง์ด ๊ทธ ์์ด๋ค. ๋ฐ๋ผ์ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ์ฉ ์กฐ๊ฑด์ ์ดํด๋ณผ ํ์๊ฐ ์๋ค. โ๏ธ ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ ์ ์ฉ ์กฐ๊ฑด๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ๋น ๋ฅด์ง๋ง, ์ต์ ํด๋ฅผ ๋ณด์ฅํ์ง๋ ๋ชปํ๋ค. ๋ฐ๋ผ์ ์๋์ ๋ ๊ฐ์ง ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฒฝ์ฐ ์ ์ฉ.. 2024. 7. 20. ์ด์ 1 ยทยทยท 5 6 7 8 9 10 11 ยทยทยท 16 ๋ค์