n x m 표 이동 5
- 문제 유형 : BFS
- 사용언어 : Python
- 난이도 : 실버 1
- 출처 : 코드 트리
from collections import deque
# 변수 선언 및 입력 받기
n, m = tuple(map(int, input().split()))
a = [
list(map(int, input().split()))
for _ in range(n)
]
# 최소 이동 횟수를 저장할 배열
visited = [
[0 for _ in range(m)] # 0은 방문하지 않았음을 의미
for _ in range(n)
]
def bfs():
q = deque()
q.append((0, 0))
visited[0][0] = 1 # 시작점을 방문 처리 (칸 수를 포함하므로 1로 시작)
# 네 방향 이동 (상, 하, 좌, 우)
dxs, dys = [0, 1, 0, -1], [1, 0, -1, 0]
while q:
x, y = q.popleft()
for dx, dy in zip(dxs, dys):
nx, ny = x + dx, y + dy
# 이동 가능하고 방문하지 않았다면
if 0 <= nx < n and 0 <= ny < m and a[nx][ny] == 1 and visited[nx][ny] == 0:
visited[nx][ny] = visited[x][y] + 1
q.append((nx, ny))
bfs()
# (n-1, m-1) 위치의 방문 횟수 출력
print(visited[n-1][m-1])
반응형
'Programming Test > 문제풀이' 카테고리의 다른 글
[문제 풀이 25] 코드 트리 - 특정 조건에 따라 줄 세우기 (0) | 2024.04.28 |
---|---|
[문제 풀이 24] 코드 트리 - n x n 표에서의 분배 (0) | 2024.04.23 |
[문제 풀이 22] 코드 트리 - 색맹 (0) | 2024.04.22 |
[문제 풀이 21] 프로그래머스 - 완주하지 못한 선수 (0) | 2024.04.20 |
[문제 풀이 20] 코드 트리 - 연결된 칸 찾기 (0) | 2024.04.19 |