SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
from collections import deque
dic = [[(0,1),(0,-1),(1,0),(-1,0)], [(-1,0),(1,0)], [(0,-1),(0,1)], [(-1,0),(0,1)], [(1,0),(0,1)], [(1,0),(0,-1)],[(-1,0),(0,-1)]]
def bfs(r,c):
q= deque()
q.append((r,c))
visited[r][c] = 1
while q:
i, j = q.popleft()
for di, dj in dic[arr[i][j]-1]:
ni, nj = i+di, j+dj
if 0 <= ni < n and 0 <= nj < m and visited[ni][nj] == 0 and arr[ni][nj] != 0: # 유효한 인덱스, 미방문, 해당위치에 터널이 있음
if (-di, -dj) in dic[arr[ni][nj]-1]: # 방향을 반전시킨게 있을 때
visited[ni][nj] = visited[i][j] + 1
q.append((ni,nj))
T = int(input())
for tc in range(1,T+1):
n, m, r, c, t = map(int, input().split()) # 지하터널 n*m /맨홀위치 arr[r][c]/ 탈출시간
arr = [list(map(int,input().split())) for _ in range(n)]
cnt = 0
visited = [[0]*m for _ in range(n)]
bfs(r,c)
for v in visited:
for k in v:
if 0< k <= t: # 주어진 시간 내의 모든 경우의 수 누적합
cnt += 1
print(f'#{tc} {cnt}')
'swea' 카테고리의 다른 글
7465. 창용 마을 무리의 개수 (0) | 2023.09.25 |
---|---|
1861. 정사각형 방 (0) | 2023.09.04 |
4366. 정식이의 은행업무 (0) | 2023.09.04 |
10966. 물놀이를 가자 (0) | 2023.09.04 |
1220. [S/W 문제해결 기본] 5일차 - Magnetic (0) | 2023.08.28 |