문제
https://www.acmicpc.net/problem/2589
설계
- bfs
while문 안에서 pop(0)을 해야하는데 pop()으로 잘못 적어 오류를 찾는데 꽤나 고생했다.
q에 append 하기 전에 visit 체크를 하면 시간이 덜 걸린다고 하니 참고하자.
def bfs(x, y, cnt):
global maxV
q = []
q.append((x, y, 0))
visit = [[0] * b for _ in range(a)]
visit[x][y] = 1
while q:
x, y, sumV = q.pop(0)
maxV = max(maxV, sumV)
for dx, dy in ((-1, 0), (0, 1), (1, 0), (0, -1)): # 위 오른쪽 아래 왼쪽
nx, ny = x + dx, y + dy
if 0 <= nx < a and 0 <= ny < b: # 배열 범위 제한
if arr[nx][ny] == 'L' and visit[nx][ny] == 0: # 땅이고 방문한 적이 없을 경우
visit[nx][ny] = 1
q.append((nx, ny, sumV + 1))
a, b = map(int, input().split()) # a: 행의 개수, b: 열의 개수
arr = [list(input()) for _ in range(a)]
maxV = 0
for i in range(a):
for j in range(b):
if arr[i][j] == 'L':
bfs(i, j, 0)
print(maxV)
'PS (Problem Solving) > Baekjoon' 카테고리의 다른 글
[백준] 5052. 전화번호 목록 (0) | 2022.06.29 |
---|---|
[백준] 14606. 피자(small) (0) | 2022.05.17 |
[백준] 14494. 다이나믹이 뭐예요? (0) | 2022.05.17 |
[백준] 19949. 영재의 시험 (0) | 2022.04.21 |
[백준] 2468. 안전 영역 (0) | 2022.04.21 |