우주에서 글을 적어본다
99클럽 코테 스터디33일차 TIL + BFS 본문
[오늘의 학습 키워드 및 문제]
- 프로그래머스의 "리코쳇 로봇" 문제를 풀었다.
- 오늘 주제는 BFS이다.
- 저번 문제보다 조건이 하나 늘어났다.
[나의 코드]
from collections import deque
def solution(board):
n, m = len(board), len(board[0])
visited = [[False] * m for _ in range(n)]
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def bfs(x, y):
q = deque()
q.append((x, y, 0))
visited[x][y] = True
while q:
x, y, dist = q.popleft()
if board[x][y] == 'G':
return dist
for i in range(4):
nx, ny = x, y
while 0 <= nx + dx[i] < n and 0 <= ny + dy[i] < m and board[nx + dx[i]][ny + dy[i]] != 'D':
nx += dx[i]
ny += dy[i]
if not visited[nx][ny]:
visited[nx][ny] = True
q.append((nx, ny, dist + 1))
return -1
for i in range(n):
for j in range(m):
if board[i][j] == 'R':
return bfs(i, j)
return -1
장애물을 만날 때까지 이동해야 하는 것이므로 그 부분을 추가해 줬다.
나머지는 다른 BFS 코드와 거의 같다.
[오늘의 회고]
- 내일 시험이 있어서 여기서 줄인다.ㅠㅠㅠ 끝!
'항해99 TIL' 카테고리의 다른 글
99클럽 코테 스터디 35일차 TIL + BFS (0) | 2024.08.25 |
---|---|
99클럽 코테 스터디 34일차 TIL + DFS (0) | 2024.08.24 |
99클럽 코테 스터디 32일차 TIL + BFS (0) | 2024.08.22 |
99클럽 코테 스터디 31일차 TIL + DFS (0) | 2024.08.21 |
99클럽 코테 스터디 30일차 TIL + 이분 탐색 (0) | 2024.08.20 |