Algorithm for Coding Test/Swea
SWEA 1953 [모의 SW 역량테스트] 탈주범 검거
달린다 동구리
2021. 10. 7. 20:11
728x90
반응형
이 코드는 Python으로 작성했습니다.
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
connect = [2, 3, 0, 1]
pipe = [
[0, 0, 0, 0],
[1, 1, 1, 1], # 상하좌우
[0, 1, 0, 1], # 상하
[1, 0, 1, 0], # 좌우
[1, 0, 0, 1], # 상우
[1, 1, 0, 0], # 하우
[0, 1, 1, 0], # 하좌
[0, 0, 1, 1], # 상좌
]
T = int(input())
for tc in range(1, T + 1):
N, M, R, C, L = map(int, input().split())
tunnel = [list(map(int, input().split())) for _ in range(N)]
visited = [[0] * M for _ in range(N)]
Q = [(R, C)]
visited[R][C] = 1
ans = 0
while Q:
r, c = Q.pop(0)
ans += 1
if visited[r][c] >= L: continue
for d in range(4):
curr_p = tunnel[r][c]
if pipe[curr_p][d] == 0: continue
nr = r + dr[d]
nc = c + dc[d]
if nr < 0 or nr >= N or nc < 0 or nc >= M: continue
nd = connect[d]
np = tunnel[nr][nc]
if visited[nr][nc] or pipe[np][nd] == 0: continue
visited[nr][nc] = visited[r][c] + 1
Q.append((nr,nc))
print("#{} {}".format(tc, ans))
문제 출처 : SW Expert Academy
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
728x90
반응형