문제 설명 및 제한사항
아이디어 및 해결 방법
코드
from collections import deque
def is_valid(r, c, maps):
return (0 <= r < len(maps)) and (0 <= c < len(maps[0]))
def bfs(r, c, maps):
visited = set()
q = deque()
q.append((r, c, 1))
visited.add((r, c))
while len(q) > 0:
r, c, d = q.popleft()
if r == len(maps) - 1 and c == len(maps[0]) - 1:
return d
for dr, dc in [[0, 1], [1, 0], [0, -1], [-1, 0]]:
if is_valid(r+dr, c+dc, maps) and (r+dr, c+dc) not in visited and maps[r+dr][c+dc] == 1:
visited.add((r+dr, c+dc))
q.append((r+dr, c+dc, d+1))
return -1
def solution(maps):
return bfs(0, 0, maps)
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges