https://www.acmicpc.net/problem/2178
2178๋ฒ: ๋ฏธ๋ก ํ์
์ฒซ์งธ ์ค์ ๋ ์ ์ N, M(2 ≤ N, M ≤ 100)์ด ์ฃผ์ด์ง๋ค. ๋ค์ N๊ฐ์ ์ค์๋ M๊ฐ์ ์ ์๋ก ๋ฏธ๋ก๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ๊ฐ์ ์๋ค์ ๋ถ์ด์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
www.acmicpc.net
์ด์ฝํ ๊ต์ฌ์ ์๋ ๋ฌธ์ ์ด๊ธฐ๋ ํ๊ณ ์ด๋ ์ ๋ ๊ทธ๋ํ ํ์ ๋ฌธ์ ์ ์ต์ํด์ ธ์ ๋น ๋ฅด๊ฒ ํ์๋ค
์ญ์ ์ฌ๋์ ๋ณต์ต์ด ์ค์ํ๊ณ ๊พธ์คํ ๊ณต๋ถํด์ผ ํ๋ค,,,
์ด ๋ฌธ์ ์ฒ์ ํ์์ ๋ ๋ต์ด ๋๋ฌด์ง ์ ๋์๋๋ฐ ๋ค์ ํธ๋๊น ์ฝ๊ฒ ํ๋ฆผ
from collections import deque
n, m = map(int, input().split())
miro = [[] for _ in range(n)]
for i in range(n):
data = input()
for j in range(m):
miro[i].append(int(data[j]))
def bfs(x, y):
queue = deque()
queue.append([x, y])
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
while queue:
qx, qy = queue.popleft()
for i in range(4):
mx = qx + dx[i]
my = qy + dy[i]
if mx < 0 or mx >= n or my < 0 or my >= m:
continue
if miro[mx][my] == 1:
miro[mx][my] = miro[qx][qy] + 1
queue.append([mx, my])
return miro[n-1][m-1]
print(bfs(0,0))
๋๋ ๊ฐ๊น์ด ๊ณณ๋ถํฐ ํ์ํด์ผ ํ๋๊น bfs๋ก ํ์๋ค
์ญ์๋ ์ด๋๋ฐฐ์ด ๋ง๋ค์ด์ ์ํ์ข์ฐ ํ์ํด์ฃผ๊ณ ๊ธธ์ด ์๋ ๊ณณ์ผ๋ก ๊ฐ๋ฉด ์๋ ์ขํ์ ๊ฐ + 1
์ด์ฐจํผ ๋ฏธ๋ก๋ ํ ๊ธธ๋ก ๋ค ์ด์ด์ ธ์๊ธฐ ๋๋ฌธ์ ๋งจ ์ฒ์ ์ขํ๋ก bfs ๋๋ฆฌ๊ณ ๋งจ ๋ง์ง๋ง ์ขํ์ ์ ์ฅ๋ ๊ฐ์ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค!
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 7569: ํ ๋งํ (Python) (0) | 2022.02.02 |
---|---|
๋ฐฑ์ค 7576: ํ ๋งํ (Python) (0) | 2022.02.02 |
๋ฐฑ์ค 1012: ์ ๊ธฐ๋ ๋ฐฐ์ถ (Python) (0) | 2022.01.31 |
๋ฐฑ์ค 2667: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ (Python) (0) | 2022.01.31 |
๋ฐฑ์ค 2606: ๋ฐ์ด๋ฌ์ค (Python) (0) | 2022.01.29 |