Algorithm/프로그래머스
[BFS][lv.2] 게임 맵 최단거리 - 파이썬(Python)
sdoaolo
2023. 1. 23. 15:46
728x90
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코딩테스트 파이썬으로 공부 안한지 또 오래돼서 문법적으로 기억안나는게 생각보다 있다...
리스트의 길이를 구할 때 len()을 써야하는데, size()나 length를 쓰려고 한다던지 ㅠㅠ
문법을 다시 기억하고 익숙하게 만들려면 앞으로도 계속 바로바로 프로그래머스에서 푸는걸 연습해야겠다.
도달하지 못할경우 -1을 출력해야하므로 visited를 -1로 초기화,
처음 위치를 1로 초기화하고 이동할때마다 최단거리를 1씩 증가시켜주면
마지막에 visited[n-1][m-1]을 리턴해주기만 하면 된다
💻 내가 쓴 정답 코드
from collections import deque
def solution(maps):
d = [[1,0],[0,1],[-1,0],[0,-1]]
n, m = len(maps), len(maps[0])
visited = [[-1]*m for _ in range(n)]
queue = deque()
queue.append([0,0])
visited[0][0] = 1
while(queue):
r,c = queue.popleft()
for i in range(4):
dr = r+d[i][0]
dc = c+d[i][1]
if(0<=dr<n and 0<=dc<m and visited[dr][dc] == -1 and maps[dr][dc] == 1):
queue.append([dr,dc])
visited[dr][dc] = visited[r][c] + 1
return visited[n-1][m-1]