문제 링크 > 코딩테스트 연습 - 미로 탈출 | 프로그래머스 스쿨 (programmers.co.kr)
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr



솔루션 >
def solution(maps):
rows, cols = len(maps), len(maps[0])
start, end, distance = 0, 0, 0
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
path = []
visited = [[0 for _ in range(cols)] for _ in range(rows)]
L = 0
# 시작
for i, x in enumerate(maps) :
if 'S' in x :
j = x.index('S')
r, c, distance = i, j, 0
visited[i][j] = 1
# 첫 번째 BFS
while True :
for i in range(4) :
x = [r + dx[i], c + dy[i]]
if 0 <= x[0] < rows and 0 <= x[1] < cols and not visited[x[0]][x[1]] and maps[x[0]][x[1]] != 'X':
path.append([x[0], x[1], distance + 1])
visited[x[0]][x[1]] = 1
if len(path) != 0 :
r, c, distance = path.pop(0)
else :
distance = -1
break
# 두 번째 BFS
if not L and maps[r][c] == 'L':
L = 1
visited = [[0 for _ in range(cols)] for _ in range(rows)]
visited[r][c] = 1
path = []
path.append([r, c, distance])
if L and maps[r][c] == 'E':
break
return distance'Development > Algorithm' 카테고리의 다른 글
| < 알고리즘 문제 풀이 > 무인도 여행 (0) | 2023.12.05 |
|---|---|
| < 알고리즘 문제 풀이 > 호텔 대실 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 혼자서 하는 틱택토 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 당구 연습 (0) | 2023.12.05 |
| < 알고리즘 문제 풀이 > 리코쳇 로봇 (0) | 2023.12.05 |