๋ฐ์ํ
๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/2178
๋์ํ์ด
- ๋๋ถ๋ถ์ ๊ทธ๋ํํ์ ๋ฌธ์ ๋ dfs,dfs๋ก ํ๋ฆฌ๊ณ dx, dy๋ฅผ ํ์ฉํ์ฌ ํ๋ฉด ๋๋ค๋ ์ฌ์ค์ ์๊ฒ๋์๋ค.
- ์ด๋ฐ์ ๋ฐฉ๋ฌธํ๊ณ ์ํ๋ ๋ ธ๋๋ฅผ 0,0์ผ๋ก ๋๊ณ ํ๋์ฉ ์ฃผ๋ณ ๋ ธ๋๋ฅผ ๊ฒ์ํด๊ฐ๋ฉฐ ์ฎ๊ฒจ๊ฐ๋ฉด๋๋ค!
- ํด๋น ๋ฌธ์ ์ฒ๋ผ ๋ง์ง๋ง์ "์ต๋จ๊ฑฐ๋ฆฌ"๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ์ ๊ฐ์ด ์์น๊ฐ ์๋๋ผ ์งํ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ ๋ฉด +=1์ฉ ํด๋์๊ฐ ํ๋ ฌ์ ํ๋ ๋ ๋ง๋ ํ(ํด๋น ๋ฌธ์ ์์ dist) ๊ตฌํด์ฃผ๋๊ฒ์ด ํธํ๋ค.
from collections import deque
n,m = map(int, input().split())
matrix = [list(map(int, list(input()))) for _ in range(n)]
visited = [[False] * m for _ in range(n)]
dist = [[0] * m for _ in range(n)] #๊ฑฐ๋ฆฌ +1 ์ฉ ํด์ค๊ฑฐ๊ณ ๋ง์ง๋ง์ ์ด๊ฑฐ ์ถ๋ ฅํ ๊ฑฐ์
queue = deque()
queue.append((0,0)) #์์์
dist[0][0] = 1 #์์์ ๊ฑฐ๋ฆฌ๋ 1๋ก ํด์ค
#๋ฐฉํฅํค
#dx[0] dx[0] : ์ผ์ชฝ
#dx[1] dx[1] : ์ค๋ฅธ์ชฝ
#dx[2] dx[2] : ์
#dx[3] dx[3] : ์๋
dx = [0,0,-1,1]
dy = [-1,1,0,0]
while queue:
x, y = queue.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m:#๊ทธ๋ํ ๋ฒ์ด๋๋ฉด ์๋ผ
if visited[nx][ny] == False and matrix[nx][ny] == 1: #๋ฐฉ๋ฌธ๋
ธ๋๊ฐ ์๋๊ณ , matrix์ 1์ด ์๋์์น๋ฉด ์์น ๋ฐ๊ฟ์ฃผ๊ธฐ
queue.append((nx, ny))
dist[nx][ny] += dist[x][y] + 1 #dist์์ x,y๋ 1์ด๋๊น ๊ทธ๊ฑฐ๋ณด๋ค +1 ํด์ค์ ๋ฃ์ด์ค (2)
visited[nx][ny] = True #๋ฐฉ๋ฌธ์ฒ๋ฆฌ๊น์ง
print(dist[n-1][m-1]) #n,m์ ๊ฐฏ์๋๊น ํ๋ ฌ์์๋ -1์ฉ
๋ฐ์ํ
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 9093๋ฒ - ๋จ์ด ๋ค์ง๊ธฐ (0) | 2022.01.16 |
---|---|
[๋ฐฑ์ค] (Swift) 10828๋ฒ - ์คํ(stack) (0) | 2022.01.16 |
[๋ฐฑ์ค] 1260๋ฒ - DFS์ BFS (ํ์ด์ฌ) (0) | 2021.10.14 |
[python3] ์ด์ฝํ - ๋ฌธ์์ด ์ฌ์ ๋ ฌ (ch.12 ๊ตฌํ - ์ ํ๋ณ ๊ธฐ์ถ๋ฌธ์ ) (0) | 2021.06.23 |
[python3] ์ด์ฝํ - ๋ญํค ์คํธ๋ ์ดํธ (ch.12 ๊ตฌํ - ์ ํ๋ณ ๊ธฐ์ถ๋ฌธ์ ) (0) | 2021.06.23 |