문제
https://school.programmers.co.kr/learn/courses/30/lessons/1844
설계
- BFS 문제
def solution(maps):
N = len(maps)
M = len(maps[0])
q = [(0, 0, 1)]
visit = [[0] * M for _ in range(N)] # N, M 헷갈림 주의
visit[0][0] = 1
answer = -1
while q:
x, y, cnt = q.pop(0)
if x == (N-1) and y == (M-1): # 최종 목적지 index는 -1씩
answer = cnt
break
for i in range(4):
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < N and 0 <= ny < M:
if visit[nx][ny] == 0:
if maps[nx][ny] == 1:
visit[nx][ny] = 1
q.append((nx, ny, cnt + 1))
return answer
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 주차 요금 계산 (0) | 2022.09.16 |
---|---|
[프로그래머스] 두 큐 합 같게 만들기 (0) | 2022.09.13 |
[프로그래머스] 성격 유형 검사하기 (0) | 2022.08.23 |
[프로그래머스] [1차] 비밀지도 (0) | 2022.08.18 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.08.16 |