โน๏ธ ๋ผ์ดํ/2020 ๊ฒจ์ธ๋ฐฉํ ๋ชจ๊ฐ์ฝ(๊ฐ์ธ)
- ๋ชฉํ - ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ์ ๊ฐ๋
์ ์ค์ต ๋ฌธ์ ๋ฅผ ํตํด ํ์ตํ๊ณ , ์ด๋ฅผ ์์ฉํ์ฌ ๋ฐฑ์ค ๋ฌธ์ ์ ์ ์ฉํด๋ณธ๋ค. 1. ํผ๋ณด๋์น ํผ๋ณด๋์น ์์ด์ N๋ฒ์งธ ํญ์ ์ถ๋ ฅํ์์ค. [์
๋ ฅ ๊ฐ] 0 [์ถ๋ ฅ ๊ฐ] 0 [์
๋ ฅ ๊ฐ] 5 [์ถ๋ ฅ ๊ฐ] 5 [์
๋ ฅ ๊ฐ] 20 [์ถ๋ ฅ ๊ฐ] 6765 2. ๊ฐ๋ฐฉ ๊ฐ๋ฐฉ์ ๋ฌผ๊ฑด์ ๋ฃ์ด ์ฎ๊ธฐ๋ คํ๋ค. ๋ฐฐ๋ญ์๋ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด ํฌ๊ธฐ์ ํ๊ณ๊ฐ ์์ผ๋ฉฐ, ๊ฐ ๋ฌผ๊ฑด์ ํฌ๊ธฐ์ ๊ฐ์น๊ฐ ๋ถ์ฌ๋์ด์๋ค. ๋ฐฐ๋ญ์ ๋ฃ์ ์ ์๋ ๋ฌผ๊ฑด๋ค์ ์ต๋ ๊ฐ์น๋ฅผ ๊ตฌํ์์ค. [์
๋ ฅ ๊ฐ] 5 # ๋ฐฐ๋ญ ํฌ๊ธฐ 4 # ๋ฌผ๊ฑด ๊ฐ์ 2 3 4 5 # ๋ฌผ๊ฑด ํฌ๊ธฐ 3 4 5 6 # ๋ฌผ๊ฑด ๊ฐ์น [์ถ๋ ฅ ๊ฐ] 7 3. ์ ์ฌ์ ์ฌ๋ชฉ์ ๋ง๋๋ ์ ์ฌ์์๋ ์ฌ๋ฃ๋ก ๋ค์ด์จ ๋๋ฌด๋ฅผ ์ ํํ K๋ฏธํฐ๋ก ์๋ฅด๋ ๊ธฐ๊ณ๊ฐ ์๋ค. ์ฌ๋ฃ๋ก ๋ค์ด์จ ๋๋ฌด ๊ด๋ฆฌ๋ฅผ ์ํ์ฌ, ๋..
โ๏ธ ์ฝํ
์ค๋น/Dynamic Programming
www.acmicpc.net/problem/11053 11053๋ฒ: ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด ์์ด A๊ฐ ์ฃผ์ด์ก์ ๋, ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ์๋ฅผ ๋ค์ด, ์์ด A = {10, 20, 10, 30, 20, 50} ์ธ ๊ฒฝ์ฐ์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ A = {10, 20, 10, 30, 20, 50} ์ด www.acmicpc.net ์
๋ ฅ ์ฒซ์งธ ์ค์ ์์ด A์ ํฌ๊ธฐ N (1 ≤ N ≤ 1,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์์ด A๋ฅผ ์ด๋ฃจ๊ณ ์๋ Ai๊ฐ ์ฃผ์ด์ง๋ค. (1 ≤ Ai ≤ 1,000) ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ์์ด A์ ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ฅผ ์ถ๋ ฅํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ a[i]๋ฅผ ์
๋ ฅ๋ ์์ด, dp[i]๋ฅผ i๋ฒ์งธ๊น์ง ๊ฐ์ฅ ๊ธด ์ฆ๊ฐํ๋ ๋ถ๋ถ ์์ด์ ๊ธธ์ด๋ผ๊ณ ..
โ๏ธ ์ฝํ
์ค๋น/Dynamic Programming
www.acmicpc.net/problem/2156 2156๋ฒ: ํฌ๋์ฃผ ์์ ํจ์ฃผ๋ ํฌ๋์ฃผ ์์ํ์ ๊ฐ๋ค. ๊ทธ ๊ณณ์ ๊ฐ๋๋, ํ
์ด๋ธ ์์ ๋ค์ํ ํฌ๋์ฃผ๊ฐ ๋ค์ด์๋ ํฌ๋์ฃผ ์์ด ์ผ๋ ฌ๋ก ๋์ฌ ์์๋ค. ํจ์ฃผ๋ ํฌ๋์ฃผ ์์์ ํ๋ ค๊ณ ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๋ ๊ฐ์ง ๊ท www.acmicpc.net ์
๋ ฅ ์ฒซ์งธ ์ค์ ํฌ๋์ฃผ ์์ ๊ฐ์ n์ด ์ฃผ์ด์ง๋ค. (1≤n≤10,000) ๋์งธ ์ค๋ถํฐ n+1๋ฒ์งธ ์ค๊น์ง ํฌ๋์ฃผ ์์ ๋ค์ด์๋ ํฌ๋์ฃผ์ ์์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ํฌ๋์ฃผ์ ์์ 1,000 ์ดํ์ ์์ด ์๋ ์ ์์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ์ต๋๋ก ๋ง์ค ์ ์๋ ํฌ๋์ฃผ์ ์์ ์ถ๋ ฅํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ ํฌ๋์ฃผ๋ฅผ ๋ง์ค ์ ์๋ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ๋ ๊น? dp๋ฅผ n๋ฒ์งธ ์๊น์ง ๋ง์ค ๋ ๊ฐ์ฅ ๋ง์ ์์ ํฌ๋์ฃผ, grape๋ฅผ n๋ฒ์งธ ์์ ํฌ๋..
โ๏ธ ์ฝํ
์ค๋น/Dynamic Programming
www.acmicpc.net/problem/10844 10844๋ฒ: ์ฌ์ด ๊ณ๋จ ์ ์ฒซ์งธ ์ค์ ์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. www.acmicpc.net ์
๋ ฅ ์ฒซ์งธ ์ค์ N์ด ์ฃผ์ด์ง๋ค. N์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ์ ๋ต์ 1,000,000,000์ผ๋ก ๋๋ ๋๋จธ์ง๋ฅผ ์ถ๋ ฅํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ ์ฐ์ ๊ท์น์ ์ฐพ์ ํ์๊ฐ ์๋ค. ๊ธธ์ด๊ฐ 1์ธ ๊ณ๋จ์ ์๋ ๋ช ๊ฐ๊ฐ ์์๊น? 1 2 3 4 5 6 7 8 9 ๋ต์ 9๊ฐ ๊ทธ๋ผ ๊ธธ์ด๊ฐ 2์ธ ๊ณ๋จ์ ์๋? 10 12 21 23 32 34 43 45 54 56 65 67 76 78 87 89 98 ๋ต์ 17๊ฐ ๊ท์น์ด ๋ณด์ด๋๊ฐ? ๋ณด์ด์ง ์์๋ ๋๋ค. (๋ณธ์ธ๋ ํธ๋๋ฐ ์ค๋๊ฑธ๋ ธ์ผ๋... ์ด ๋ฌธ์ ๋ง์ด ์ด๋ ค์ ..
โน๏ธ ๋ผ์ดํ/2020 ๊ฒจ์ธ๋ฐฉํ ๋ชจ๊ฐ์ฝ(๊ฐ์ธ)
- ๋ชฉํ - codekodo.tistory.com/33 [์ฝ๋
ํ๊ตฌ๋ง ํ] 2021.01.20(์) - 5์ฃผ์ฐจ ๊ฐ์ธ ๋ชฉํ - ๋ชฉํ - ๋คํธ์ํฌ ์ ๋์ ๊ณ์ฐํ๋ ํฌ๋ ํ์ปค์จ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋
์ ํ์ตํ๊ณ , ์ด๋ฅผ ์ ๋ฆฌํ๋ค. ์์์ ๋ ฌ๊ณผ A* ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋
๋ ์ถ๊ฐ์ ์ผ๋ก ํ์ตํ๋ค. ์ดํ ์ค์ต ๋ฌธ์ ์ ๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํตํด ์ด๋ฅผ codekodo.tistory.com 1. ์์ ์ ๋ ฌ ์ ํ ๊ณผ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ ์ ํ ๊ณผ๋ชฉ์ ์ถ๋ ฅํ๊ณ ์ดํ์ ์ฐ๊ณ๋ ๊ณผ๋ชฉ์ ์ถ๋ ฅํ๋ ๋ฌธ์ ์๋ค. ๊ณผ๋ชฉ๋ช
์ด ์ฒ์์ ์ฃผ์ด์ง๋ฏ๋ก ์ด ๊ณผ๋ชฉ๋ช
์ dictํ์ผ๋ก ์ ์ฅํ๋ค. M๊ฐ์ ์
๋ ฅ ๊ฐ์์ ์ ํ ๊ณผ๋ชฉ, ํํ ๊ณผ๋ชฉ์ด ์
๋ ฅ๋๋๋ฐ ์ ํ ๊ณผ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ ์ด๋ฅผ count ํด์ค๋ค. count๊ฐ 0์ด๋ฉด ์ด๋ ์ ํ ๊ณผ๋ชฉ์ด ์๋ ๊ฒฝ์ฐ์ด๋ค. ์ดํ BFS๋ฅผ ํตํด ๊ณผ๋ชฉ ์ด์ ์์๋ฅผ ํ..
โ๏ธ ์๊ณ ๋ฆฌ์ฆ/Graph
DFS(Depth-Find-Search) ๊น์ด ์ฐ์ ํ์ ์ง๋ ์๊ฐ BFS์ ์ด์ด ์ค๋์ DFS์ ๋ํด ์์๋ณด๋ ค๊ณ ํ๋ค. DFS๋ Depth-Find-Search๋ก ๊น์ด ์ฐ์ ํ์์ด๋ค. BFS์ ๋ค๋ฅด๊ฒ DFS๋ ๊น์ด๋ฅผ ์ฐ์ ์ ์ผ๋ก ํ์ํ๋ค. ์ฆ ์ต๋ ๊น์ด๊น์ง ์ฌ๊ท์ ์ผ๋ก ์ด๋ํ ํ ์ต๋ ๊น์ด์ ๋๋ฌํ ๊ฒฝ์ฐ ์์ผ๋ก ์ด๋ํ๋ค. ๋ํ BFS์์๋ Queue๋ฅผ ์ฌ์ฉํ๋ค๋ฉด DFS์์๋ Stack์ ์ฌ์ฉํ๋ค. ์ด Stack์ ์ ์ฅ๋ ๊ฐ์ด ์ฐ๋ฆฌ๊ฐ ์ํ๋ DFS์ ํ์ ์์์ด๋ค. ์๊ณ ๋ฆฌ์ฆ ๋์ ๋ฐฉ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ํน์ ์ ์ ์ด ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ธ ๊ฒฝ์ฐ ์ด๋ฅผ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ ํด์ค๋ค. 2. ํด๋น ์ ์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ค๋ฅธ ์ ์ ์ ๋ํด ์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ๋ค์๊ณผ ๊ฐ์ ๊ทธ๋ํ๊ฐ ์ฃผ์ด์ก์ ๋ DFS๋ฅผ ์ ์ฉํด๋ณด์. โ ์์ ์ ์ ์ 8..
โ๏ธ ์๊ณ ๋ฆฌ์ฆ/Graph
BFS(Breath-Find-Search) ๋๋น ์ฐ์ ํ์ ๊ทธ๋ํ์ ํ์ ๋ฐฉ๋ฒ ์ค ํ๋์ BFS์ ๋ํด์ ์ดํด๋ณด๋ ค๊ณ ํ๋ค. BFS๋ ๋ง ๊ทธ๋๋ก ๋๋น ์ฐ์ ํ์, ์ฆ ํน์ Vertice์์ ๊ฐ์ฅ ๊ฐ๊น์ด Vertice๋ถํฐ ํ์ํ๋ค๋ ๋ป์ด๋ค. ์ฐ์ BFS๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์๋ Queue๊ฐ ํ์ํ๋ค. Stack, Queue, Heap์ ๋ํด์๋ ๋์ค์ ์์ธํ ์ค๋ช
ํ๊ธฐ๋ก ํ๊ณ Queue์ ๋ํด ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด FIFO(First in First out - ์ ์
์ ์ถ)์ผ๋ก ๋์ํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์์์๋ ๋งํ๋ฏ์ด BFS์ ๊ฐ์ฅ ํฐ ๊ฐ๋
์ ๊ฐ๊น์ด ์ ์ ์ ๋ฐฉ๋ฌธํ๋, ์์ง ๋ฐฉ๋ฌธํ์ง ์์ ์ ์ ์ธ ๊ฒฝ์ฐ ๋ฐฉ๋ฌธ ๋ฆฌ์คํธ์ ์ ์ ์ ์ ์ฅํ๋ฉด ๋๋ค. ์ด ๋ฐฉ๋ฌธ ๋ฆฌ์คํธ๊ฐ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ์ต์ข
์ ์ธ BFS์ ํ์ ์์์ด๋ค. ์๊ณ ๋ฆฌ์ฆ ๋์ ๋ฐฉ์..
โน๏ธ ๋ผ์ดํ/2020 ๊ฒจ์ธ๋ฐฉํ ๋ชจ๊ฐ์ฝ(๊ฐ์ธ)
- ๋ชฉํ - ๋คํธ์ํฌ ์ ๋์ ๊ณ์ฐํ๋ ํฌ๋ ํ์ปค์จ ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋
์ ํ์ตํ๊ณ , ์ด๋ฅผ ์ ๋ฆฌํ๋ค. ์์์ ๋ ฌ๊ณผ A* ์๊ณ ๋ฆฌ์ฆ์ ๊ฐ๋
๋ ์ถ๊ฐ์ ์ผ๋ก ํ์ตํ๋ค. ์ดํ ์ค์ต ๋ฌธ์ ์ ๋ฐฑ์ค ๋ฌธ์ ๋ฅผ ํตํด ์ด๋ฅผ ์์ฉํ๋ค. 1. ์์ ์ ๋ ฌ 2. ์ ๊ธ์ ๋ฒ์น 3. ๊ธฐ๋ฆ์ด ๊ฐ๋น๊ฐ๋น 4. ๋ฐฑ์ค 2188๋ฒ - ์ถ์ฌ๋ฐฐ์ ๋ฐฑ์ค 2188๋ฒ - ์ถ์ฌ๋ฐฐ์ (www.acmicpc.net/problem/2188) 2188๋ฒ: ์ถ์ฌ ๋ฐฐ์ ๋๋ถ ์กด์ ์ ์ถ์ฌ๋ฅผ ์์ฑํ์๋ค. ์ถ์ฌ ํ๊ฒฝ์ ์พ์ ํ๊ฒ ์ ์งํ๊ธฐ ์ํด์, ์กด์ ์ถ์ฌ๋ฅผ M๊ฐ์ ์นธ์ผ๋ก ๊ตฌ๋ถํ๊ณ , ํ ์นธ์๋ ์ต๋ ํ ๋ง๋ฆฌ์ ์๋ง ๋ค์ด๊ฐ๊ฒ ๊ณํํ๋ค. ์ฒซ ์ฃผ์๋ ์๋ฅผ ์์ ๋ฐฐ์ ํด www.acmicpc.net
โ๏ธ ์ฝํ
์ค๋น/Dynamic Programming
www.acmicpc.net/problem/1463 1463๋ฒ: 1๋ก ๋ง๋ค๊ธฐ ์ฒซ์งธ ์ค์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 106๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค. www.acmicpc.net ์
๋ ฅ ์ฒซ์งธ ์ค์ 1๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10^6๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์ ์ N์ด ์ฃผ์ด์ง๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ์ฐ์ฐ์ ํ๋ ํ์์ ์ต์๊ฐ์ ์ถ๋ ฅํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ ์ฐ์ ๊ท์น์ ์ฐพ์๋ณด์. ๊ณ์ฐ์์ ๊ฒฝ์ฐ ์ฌ๋ฌ๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๋์ฌ ์๋ ์๋ค. N ์ฐ์ฐ ํ์ ๊ณ์ฐ์ 1 1 1 2 1 2/2=1 3 1 3/3=1 4 2 (4-1)/3=1 5 3 (5-1)/2/2=1 6 2 6/3/2=1 7 3 (7-1)/3/2=1 8 3 8/2/2/2=1 9 2 9/3/3=1 10 3 (10-1)/3/3=1 ์ด๋ค ๊ท์น์ ์ฐพ์ ์ ์์๊น? ์ฐ์ ์๊ฐ 1์ฉ ์ปค์ง ..
โ๏ธ ์ฝํ
์ค๋น/Dynamic Programming
www.acmicpc.net/problem/2579 2579๋ฒ: ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์ ๊ณ๋จ ์๋ ์์์ ๋ถํฐ ๊ณ๋จ ๊ผญ๋๊ธฐ์ ์์นํ ๋์ฐฉ์ ๊น์ง ๊ฐ๋ ๊ฒ์์ด๋ค. ๊ณผ ๊ฐ์ด ๊ฐ๊ฐ์ ๊ณ๋จ์๋ ์ผ์ ํ ์ ์๊ฐ ์ฐ์ฌ ์๋๋ฐ ๊ณ๋จ์ ๋ฐ์ผ๋ฉด ๊ทธ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์ www.acmicpc.net ์
๋ ฅ ์
๋ ฅ์ ์ฒซ์งธ ์ค์ ๊ณ๋จ์ ๊ฐ์๊ฐ ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ ํ ์ค์ ํ๋์ฉ ์ ์ผ ์๋์ ๋์ธ ๊ณ๋จ๋ถํฐ ์์๋๋ก ๊ฐ ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ๊ณ๋จ์ ๊ฐ์๋ 300์ดํ์ ์์ฐ์์ด๊ณ , ๊ณ๋จ์ ์ฐ์ฌ ์๋ ์ ์๋ 10,000์ดํ์ ์์ฐ์์ด๋ค. ์ถ๋ ฅ ์ฒซ์งธ ์ค์ ๊ณ๋จ ์ค๋ฅด๊ธฐ ๊ฒ์์์ ์ป์ ์ ์๋ ์ด ์ ์์ ์ต๋๊ฐ์ ์ถ๋ ฅํ๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ dp ๋ฌธ์ ์ด๋ฏ๋ก ์ ํ์์ ์ฐพ์์ผํ๋ค. ๋์ฐฉ์ง์ ์ ๊ฐ ์ ์๋ ๋ฐฉ๋ฒ์ ์ด๋ป๊ฒ ๋ ๊น? ๋ ..