| ๋์ด๋: โโโ | ํ์ด ์๊ฐ: 30๋ถ | ์๊ฐ ์ ํ: 1์ด | ๋ฉ๋ชจ๋ฆฌ ์ ํ: 128MB |
๋ฌธ์ : ๋๋น์ด๋ N ร M ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ ํํ์ ๋ฏธ๋ก์ ๊ฐํ ์๋ค. ๋ฏธ๋ก์๋ ์ฌ๋ฌ ๋ง๋ฆฌ์ ๊ดด๋ฌผ์ด ์์ด ์ด๋ฅผ ํผํด ํ์ถํด์ผ ํ๋ค. ๋๋น์ด์ ์์น๋ (1, 1)์ด๊ณ ๋ฏธ๋ก์ ์ถ๊ตฌ๋ (N, M)์ ์์น์ ์กด์ฌํ๋ฉฐ ํ ๋ฒ์ ํ ์นธ์ฉ ์ด๋ํ ์ ์๋ค. ์ด๋ ๊ดด๋ฌผ์ด ์๋ ๋ถ๋ถ์ 0์ผ๋ก, ๊ดด๋ฌผ์ด ์๋ ๋ถ๋ถ์ 1๋ก ํ์๋์ด ์๋ค. ๋ฏธ๋ก๋ ๋ฐ๋์ ํ์ถํ ์ ์๋ ํํ๋ก ์ ์๋๋ค. ์ด๋ ๋๋น์ด๊ฐ ํ์ถํ๊ธฐ ์ํด ์์ง์ฌ์ผ ํ๋ ์ต์ ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ์์ค. ์นธ์ ์
๋๋ ์์ ์นธ๊ณผ ๋ง์ง๋ง ์นธ์ ๋ชจ๋ ํฌํจํด์ ๊ณ์ฐํ๋ค.
์
๋ ฅ ์กฐ๊ฑด: – ์ฒซ์งธ ์ค์ ๋ ์ ์ N, M (4 โฆ N, M โฆ 200)์ด ์ฃผ์ด์ง๋๋ค. ๋ค์ N๊ฐ์ ์ค์๋ ๊ฐ๊ฐ M๊ฐ์ ์ ์(0 ํน์ 1)๋ก ๋ฏธ๋ก์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๊ณต๋ฐฑ ์์ด ๋ถ์ด์ ์
๋ ฅ์ผ๋ก ์ ์๋๋ค. ๋ํ ์์ ์นธ๊ณผ ๋ง์ง๋ง ์นธ์ ํญ์ 1์ด๋ค. ์ถ๋ ฅ ์กฐ๊ฑด: – ์ฒซ์งธ ์ค์ ์ต์ ์ด๋ ์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค. |
๋ฌธ์ ํ์ด)
์ด๊ฑฐ๋ BFS ๋ฐฉ์์ผ๋ก ํ ์ ์๋ค. ์๋ํ๋ฉด, ๋ฌธ์ ์์๋ ๋๋น์ด๊ฐ ํ์ถํ๊ธฐ ์ํด ์์ง์ฌ์ผ ํ๋ ์ต์ ์นธ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ผ๊ณ ํ๊ณ , ์ถ๋ ฅ ์กฐ๊ฑด๋ ์ฒซ์งธ ์ค์ ์ต์ ์ด๋์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค๊ณ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
DFS๋ ์ผ๋จ ๋๊น์ง ์งํํด์ ์ด๋๊ฐ ๊ฐ๋ฅํ ์ง๋ฅผ ๋ณด๊ธฐ ๋๋ฌธ์ ์ฌ๋ฌ ๋ฒ ์๋ค ๊ฐ๋ค ํ ์ ์๋ค. ๊ทธ๋ ๊ธฐ์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋ณด์ฅ์ด ์๋๋ ๋ฐ๋ฉด, BFS๋ ๊ฐ๊น์ด ๊ณณ๋ถํฐ ํผ์ ธ๋๊ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํด์ ํจ์จ์ ์ผ๋ก ์์ง์ด๊ธฐ ๋๋ฌธ์ ์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ค.
BFS (Breadth-First Search)๋ ๋๋น ์ฐ์ ํ์์ผ๋ก ๊ทธ๋ํ๋ ๋งต์์ ํ ์ง์ ์์ ์์ํด ์ธ์ ํ ์นธ์ ๋จผ์ ์ ๋ถ ํ์ํ ๋ค, ๊ทธ ๋ค์ ๊ฑฐ๋ฆฌ์ ์นธ์ ํ์ํ๋ ๋ฐฉ์์ด๋ค. ๋ง์น ๋์ ๋ฌผ์ ๋์ก์ ๋ ๋ฌผ๊ฒฐ์ด ๋์ฌ์์ฒ๋ผ ํผ์ ธ๋๊ฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
DFS์ ๋ฌ๋ฆฌ ๊ฐ๊น์ด ๊ณณ๋ถํฐ ์์๋๋ก ํ์ํ๊ธฐ ๋๋ฌธ์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ค๋ ํน์ง์ด ์๋ค. ์ด ๋๋ฌธ์ “์ต์ ๋ช ์นธ์ ์ด๋ํด์ผ ํ๋๊ฐ” ์ ๊ฐ์ ์ต๋จ ๊ฒฝ๋ก ๋ฌธ์ ์ ์ ํฉํ๋ค. ํ(Queue) ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉฐ, ๋จผ์ ๋ฃ์ ์นธ์ ๋จผ์ ๊บผ๋ด๋ ๋ฐฉ์์ผ๋ก ๋์ํ๋ค.
์ด ๋ฌธ์ ์์๋ BFS๋ฅผ ์ด์ฉํด ์์์ (0, 0) ์์ ์ถ๋ฐํด ์ํ์ข์ฐ๋ก ํผ์ ธ๋๊ฐ๋ฉฐ ๋์ฐฉ์ (N-1, M-1) ๊น์ง์ ์ต๋จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค. ์ด๋ํ ๋๋ง๋ค ํด๋น ์นธ์ ๊ฐ์ ์ด์ ์นธ์ ๊ฐ + 1๋ก ๊ฐฑ์ ํด ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ฉฐ, ๋์ฐฉ์ ์ ๋๋ฌํ์ ๋์ ๊ฐ์ด ๊ณง ์ต์ ์ด๋ ์นธ์ ๊ฐ์๊ฐ ๋๋ค.
์ด์ ๋ฌธ์ ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋งต์ ํฌ๊ธฐ๋ฅผ N๊ณผ M์ผ๋ก ์
๋ ฅ๋ฐ๊ณ (N ร M), ๋งต ์ ๋ณด๋ graph ๋ณ์์ ์ ์ฅํ๋ค. ๊ณต๋ฐฑ ์์ด ๋ถ์ด์ ์
๋ ฅ๋๋ฏ๋ก DFS์ ๋ง์ฐฌ๊ฐ์ง๋ก split() ์์ด ํ ๊ธ์์ฉ ๋ฐ๋๋ค.
์์์ ๋ฐฐ์ด๋๋ก queue ๋ฅผ ์ฌ์ฉํด ์์์ (0, 0) ์ ๋จผ์ ๋ฃ๊ณ ํ์์ ์์ํ๋ค. ํ์์ ๊บผ๋ธ ์นธ์ ์ํ์ข์ฐ๋ฅผ ํ์ธํ๋ฉด์, ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ๊ดด๋ฌผ(0)์ด ์๋ ์นธ์ ์คํตํ๋ค. ์ฒ์ ๋ฐฉ๋ฌธํ๋ ์นธ(1)์ด๋ผ๋ฉด ์ด์ ์นธ์ ๊ฐ์ +1 ์ ๋ํด ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๊ณ ํ์ ๋ฃ๋๋ค. ์ด ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค ๋ณด๋ฉด ๋์ฐฉ์ (N-1, M-1) ์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๊ธฐ๋ก๋๊ณ , ๊ทธ ๊ฐ์ ๋ฐํํ๋ฉด ๋์ด๋ค.
BFS๋ DFS์ ๋นํด ํ์คํ ์ด๋ ค์ ๋ค. ์ํ์ข์ฐ ๋ฌธ์ ๋ ๋งต ๋ฌธ์ ๋ ์ด์ ์ต์ํด์ก์ง๋ง, BFS ํน์ ์ ํ ๋ฐฉ์์ด๋ graph[nx][ny] = graph[x][y] + 1 ๋ก ๊ฑฐ๋ฆฌ๋ฅผ ๊ธฐ๋กํ๋ ๋ฐฉ์์ ์ง์ ํ ์นธ์ฉ ๋ฐ๋ผ๊ฐ๋ณด๊ธฐ ์ ๊น์ง๋ ์ดํด๊ฐ ์ ๋๋ค. ๋ฌผ๋ก ์ฌ๋ฌ ๋ฒ ๋น์ทํ ๋ฌธ์ ๋ฅผ ํ๋ค ๋ณด๋ฉด ๊ฐ์ด ์กํ๊ฒ ์ง๋ง, ์ง๊ธ ๋น์ฅ์ ์์ง ๋ด ๊ฒ์ผ๋ก ์์ ํ ๋ง๋ค์ง ๋ชปํ ๋๋์ด๋ค.
์
๋ ฅ ์์๋ฅผ ์ค ๋๋ก ์
๋ ฅํด๋ณด๋ฉด ์๋์ฒ๋ผ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
์
๋ ฅ ์์: 5 6 101010 111111 000001 111111 111111 |
๋ต์ ์์ ์ฝ๋์ ๊ฑฐ์ ๋์ผํ๊ฒ ๋์๋ค. AI์ ๋์์ ๋ฐ๊ธด ํ์ง๋ง, ๊ฐ ๋จ๊ณ๋ฅผ ์ดํดํ๋ฉด์ ํ์๊ธฐ ๋๋ฌธ์ ์๋ฏธ ์๋ ํ์ด์๋ค๊ณ ์๊ฐํ๋ค.
๊ทธ๋ ๊ทธ๋ด ๊ฒ์ด ์ ์ด์ BFS ์์๋ฅผ ์ดํดํ๋ ๊ฒ๋ ๋ ๋ฒ ๋ด์ผ ์ดํด๊ฐ ๊ฐ๋ค๋ฉด… ๋ญ ๋ง ๋คํ ์ ๋์ง ์์๊น..ใ
ใ
์ง๊ด์ ์ธ DFS์ ๋นํด BFS๋ ์์๊ฐ ์ด์ง ํท๊ฐ๋ฆฌ๊ธด ํ์ง๋ง ๊ทธ๋๋ ๋
ธ๋ ์์ง์ด๋ ์์๋ ์ดํดํ๋๋ฐ, ๋ง์ ๋ฌธ์ ๋ฅผ ํ๋ ค๊ณ ํ๋ ์๋ฏ ๋ง๋ฏํด์ ai ๋์์ ์ข ๋ง์ด ๋ฐ์๋ค…
BFS ๋ฌธ์ ์์ ์์งํ ์ฒ์์ ๋ญ ๋ชจ๋ฅด๋์ง๋ ๋ชฐ๋๋ค. DFS๋ ์ํ์ข์ฐ๋ฅผ ์ง์ dfs(x-1, y), dfs(x+1, y) ์ด๋ ๊ฒ ์จ์คฌ๋๋ฐ, BFS์์๋ ์ for i in range(4) ๋ก ๋ฌถ๋์ง๋ถํฐ ์ดํด๊ฐ ์ ๋๋ค. ์๊ณ ๋ณด๋ ๊ฒฐ๊ณผ๋ ๋๊ฐ๊ณ ๊ทธ๋ฅ for๋ฌธ์ผ๋ก ์ค์ธ ๊ฒ๋ฟ์ด์๋๋ฐ, ๊ทธ๊ฑธ ๋ชจ๋ฅด๋๊น ์ฝ๋ ์์ฒด๊ฐ ๋ฏ์ค๊ฒ ๋๊ปด์ก๋ ๊ฒ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ queue.append((x, y)) ๊ฐ ์ ์์์ ์ด ๋๋์ง๋ ํท๊ฐ๋ ธ๋ค. ์ฑ
์์๋ visited[start] = True ๋ก ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ๋ฐ๋ก ํ๋๋ฐ, ์ฌ๊ธฐ์๋ ๊ทธ๋ฐ ๊ฒ ์์ผ๋๊น ์ด๋์ ์์ํ๋ ๊ฑด์ง ๊ฐ์ด ์ ์๋ค. ์๊ณ ๋ณด๋ bfs(0, 0) ์ผ๋ก ํธ์ถํ ๋ x=0, y=0 ์ด ํจ์๋ก ๋ค์ด๊ฐ๊ณ , ๊ทธ๊ฒ ํ์ ๋ค์ด๊ฐ๋ ๊ฑฐ์๋ค. ๋น์ฐํ ๊ฑด๋ฐ ๋น์ฐํ๊ฒ ์ ๋๊ปด์ก๋ค.
์ ์ผ ์ค๋ ๊ฑธ๋ฆฐ ๊ฑด ์ญ์ graph[nx][ny] = graph[x][y] + 1 ์ด ์ ์ต๋จ๊ฑฐ๋ฆฌ๊ฐ ๋๋์ง์๋ค. DFS์์๋ result += 1 ๋ก ๋ฉ์ด๋ฆฌ ๊ฐ์๋ฅผ ์
๋๋ฐ, ์ฌ๊ธฐ์๋ ์ ๊ทธ๋ํ ๊ฐ ์์ฒด๋ฅผ ๋ฐ๊พธ๋์ง ์ ํ ์ดํด๊ฐ ์ ๋๋ค. ์ค๋ช
์ ๋ค์ด๋ ๋ชจ๋ฅด๊ฒ ์ด์ ๊ฒฐ๊ตญ (0,0) ์์ (4,5) ๊น์ง ํ ์นธ์ฉ ์ง์ ๋ฐ๋ผ๊ฐ๋ดค๋ค.
์์์ (0,0) = 1 ์์ ์ถ๋ฐํด์ ์๋ (1,0) ์ผ๋ก ์ด๋ํ๋ฉด 1+1=2, ๊ฑฐ๊ธฐ์ ์ค๋ฅธ์ชฝ (1,1) ์ผ๋ก ๊ฐ๋ฉด 2+1=3… ์ด๋ ๊ฒ ํ ์นธ์ฉ ๋ฐ๋ผ๊ฐ๋ค ๋ณด๋๊น ๋์ฐฉ์ (4,5) ์ 10 ์ด ๊ธฐ๋ก๋๋ ๊ณผ์ ์ด ๋์ ๋ณด์๋ค. ์ค๊ฐ์ ์ซ์๊ฐ ๊ฒน์น๋ ์นธ๋ ์์๋๋ฐ, ๊ทธ๊ฑด ์์์ ์์ ๊ฐ์ ๊ฑฐ๋ฆฌ๋งํผ ๋จ์ด์ง ์นธ๋ค์ด๋ผ ๊ฒน์ณ๋ ์๊ด์๋ค๋ ๊ฒ๋ ๊ทธ๋ ์ดํดํ๋ค.
12๋จ๊ณ๊น์ง ํ๋ํ๋ ํด๋ณด๊ณ ๋์์ผ ์ ๊ทธ๋ ๊ฒ ๋๋์ง ์ดํดํ ๋ฐ๋ณด ๊ฐ์ ๋ ์์ … ์ฌ์ง์ด 4๋ฒ์งธ 5๋ฒ์งธ ์ค ๋ชจ๋๊ฐ 1๋ก ๋์ด์๋๋ฐ ์ ์ ๋ถ๋ถ์ ์ซ์๋ฅผ ์ ์ธ๋ ๊ฑฐ๋๊ณ ๋ฉ์ฒญํ๊ฒ๋ ๋ฌผ์ด๋ดค๋ค..ใ
ใ
BFS๋ ๊ฐ๊น์ด ๊ณณ๋ถํฐ ํผ์ ธ๋๊ฐ๊ธฐ ๋๋ฌธ์ ๋์ฐฉ์ ์ ์ฒ์ ๋ฟ๋ ์๊ฐ์ด ์ต๋จ๊ฑฐ๋ฆฌ์์ด ๋ณด์ฅ๋๋ค. ๊ทธ๋์ 4, 5๋ฒ์งธ ์ค ์ผ์ชฝ ์นธ๋ค์ ๊ตณ์ด ํ์ํ ํ์๊ฐ ์๊ณ , return graph[N-1][M-1] ํ ์ค๋ก ๋๋ผ ์ ์๋ ๊ฑฐ์๋ค. ์ง์ ๋ฐ๋ผ๊ฐ๋ณด๊ธฐ ์ ๊น์ง๋ ์ง์ง ํ๋๋ ๋ชฐ๋๋๋ฐ, ํ ์นธ์ฉ ๋ณด๊ณ ๋๋๊น ๊ทธ์ ์์ผ ์ดํด๊ฐ ๋๋ค.