SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
from collections import deque
def bfs():
global result
for i in range(n):
for j in range(m):
if arr[i][j] == 'W': # W인 칸을 모두 저장
q.append((i, j))
visited[i][j] = 0 # visited 기본값이 -1이므로 0은 방문했다는 뜻
while q:
i, j = q.popleft()
for di, dj in [(1, 0), (-1, 0), (0, -1), (0, 1)]:
ni, nj = i + di, j + dj
if 0 <= ni < n and 0 <= nj < m and arr[ni][nj] == 'L' and visited[ni][nj] == -1:
q.append((ni, nj))
visited[ni][nj] = visited[i][j] + 1 # 깊이 기록
s = 0
for i in range(n):
for j in range(m):
s += visited[i][j] # 모든 이동횟수 누적합
return s
T = int(input())
for tc in range(1,T+1):
n, m = map(int, input().split())
arr = [input() for _ in range(n)]
q = deque()
visited=[[-1]*m for _ in range(n)] # 디폴트를 -1로 해야 이동횟수가 맞음
print(f'#{tc} {bfs()}')
반대로 W에서 L로 가는 이동횟수를 세는 것이 더 편함!
'swea' 카테고리의 다른 글
1953. [모의 SW 역량테스트] 탈주범 검거 (0) | 2023.09.04 |
---|---|
4366. 정식이의 은행업무 (0) | 2023.09.04 |
1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2023.08.28 |
1860. 진기의 최고급 붕어빵 (0) | 2023.08.28 |
2117. [모의 SW 역량테스트] 홈 방범 서비스 (0) | 2023.08.28 |