프로그래머스/lv.2
(프로그래머스) lv.2 게임 맵 최단거리
bingual
2024. 1. 15. 16:41
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
최소 값을 구해야 하기 때문에 bfs로 풀이
from collections import deque
def solution(maps):
n, m = len(maps), len(maps[0])
def bfs(x, y):
# 좌표 설정
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
que = deque()
que.append((x, y, 1)) # 현재 좌표 & 현재 좌표를 방문 처리한 카운트 노드 삽입
while que:
x, y, c = que.popleft()
# 맵의 끝에 도달 했다면 누적 카운트 반환
if x == n - 1 and y == m - 1:
return c
for i in range(4):
# 다음 좌표 탐색
nx, ny = x + dx[i], y + dy[i]
# 다음 좌표가 맵 밖을 벗어나지 않았고 방문처리가 안됐다면 방문처리후 노드 삽입
if 0 <= nx < n and 0 <= ny < m and maps[nx][ny] == 1:
maps[nx][ny] = 0
que.append((nx, ny, c + 1))
return -1
return bfs(0, 0)