반응형
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
# 포인트
1. 단순히 cnt+=1로 카운팅하게되면, bfs에서 들리는 모든 빈칸을 체크하게 되므로, maps[ny][nx]로 좌표를 제한하면서 기록한다.
2. 도착점이 1인 경우에는 방문하지 않은 것이기 때문에 retrun -1
from collections import deque
def solution(maps):
n=len(maps)
m=len(maps[0])
v=[[0]*m for _ in range(n)]
q=deque([(0,0)])
v[0][0]=1
dy=[-1, 0, 1, 0]
dx=[0, 1, 0, -1]
while q:
y, x=q.popleft()
for i in range(4):
ny=y+dy[i]
nx=x+dx[i]
if 0 <= ny < n and 0 <= nx <m:
if not v[ny][nx] and maps[ny][nx]==1:
v[ny][nx]=1
q.append((ny, nx))
# 이 부분에서 cnt+=1일 경우, 빈칸을 카운팅하게 되므로,
#구체적 좌표인 [ny][nx]를 주어 최단경로만 체크
maps[ny][nx]=maps[y][x]+1
if maps[n-1][m-1]==1:
return -1
else : return maps[n-1][m-1]
반응형
'프로그래밍 > 알고리즘 & 자료구조' 카테고리의 다른 글
백준 14497 : 주난의 난 with 파이썬 (0) | 2024.01.28 |
---|---|
백준 1261 : 알고스팟 with 파이썬 (1) | 2024.01.26 |
[프로그래머스] 타겟넘버 with 파이썬 : BFS, 재귀함수 (0) | 2024.01.24 |
백준 2979 : 트럭주차 with 파이썬 (0) | 2024.01.23 |
백준 10813 : 공바꾸기 with 파이썬 (0) | 2024.01.23 |
댓글