⭐ 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
⭐ 풀이 코드
# BFS 알고리즘 : 너비 우선 탐색
# 가까운 노드부터 탐색
from collections import deque
def solution(maps):
answer = 0
# 좌, 우, 하, 상
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
r = len(maps) # 행
c = len(maps[0]) # 열
# 좌표 방문 최단거리
graph = [[-1 for _ in range(c)] for _ in range(r)]
queue = deque()
queue.append((0, 0)) # 시작점
graph[0][0] = 1
while queue:
# 현재 위치
y, x = queue.popleft()
# 현재 위치에서 네 방향으로의 위치 확인
for i in range(4):
nx = x + dx[i] # 이동 후 x좌표
ny = y + dy[i] # 이동 후 y 좌표
# 이동 후 좌표가 범위 내에 있는 경우 and 벽이 아닌 경우
if (0 <= nx < c) and (0 <= ny < r) and (maps[ny][nx]==1):
# 해당 좌표를 처음 방문하는 경우에만 최단 거리 기록
if graph[ny][nx] == -1:
graph[ny][nx] = graph[y][x] + 1
queue.append((ny,nx))
return graph[r-1][c-1]
'Python > Programmers' 카테고리의 다른 글
[프로그래머스/Python] Lv 0. 로그인 성공? (0) | 2023.04.18 |
---|---|
[프로그래머스/Python] Lv 1. 대충 만든 자판 (0) | 2023.04.18 |
[프로그래머스/Python] Lv 1. 체육복 (0) | 2023.04.17 |
[프로그래머스/Python] Lv 1. 신규 아이디 추천 (0) | 2023.04.17 |
[프로그래머스/Python] Lv 2. 오픈채팅방 (0) | 2023.04.17 |