반응형
https://school.programmers.co.kr/learn/courses/30/lessons/1844
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제풀이
최소 값을 구해야 하기 때문에 bfs로 풀이
from collections import deque
def solution(maps):
n, m = len(maps), len(maps[0])
def bfs(x, y):
# 좌표 설정
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
que = deque()
que.append((x, y, 1)) # 현재 좌표 & 현재 좌표를 방문 처리한 카운트 노드 삽입
while que:
x, y, c = que.popleft()
# 맵의 끝에 도달 했다면 누적 카운트 반환
if x == n - 1 and y == m - 1:
return c
for i in range(4):
# 다음 좌표 탐색
nx, ny = x + dx[i], y + dy[i]
# 다음 좌표가 맵 밖을 벗어나지 않았고 방문처리가 안됐다면 방문처리후 노드 삽입
if 0 <= nx < n and 0 <= ny < m and maps[nx][ny] == 1:
maps[nx][ny] = 0
que.append((nx, ny, c + 1))
return -1
return bfs(0, 0)
'프로그래머스 > lv.2' 카테고리의 다른 글
JadenCase 문자열 만들기 (0) | 2024.02.03 |
---|---|
최댓값과 최솟값 (0) | 2024.02.03 |
(프로그래머스) lv.2 미로 탈출 (0) | 2024.01.19 |
(프로그래머스) lv.2 타겟넘버 (0) | 2024.01.15 |
(프로그래머스) lv.2 가장 큰 수 (0) | 2024.01.15 |