본문 바로가기
코딩 테스트/DFS, BFS

경쟁적 전염

by hazel_ 2021. 1. 27.

p.345

 

import sys
from collections import deque

input=sys.stdin.readline
n,k=map(int, input().split())
test=[]
data=[]
for i in range(n):
  test.append(list(map(int, input().split())))
  for j in range(n):
    if test[i][j] != 0:
      # 바이러스 종류, 시간, 좌표x, 좌표y
      data.append((test[i][j],0,i,j))
s,x,y=map(int, input().split())

data.sort()

q=deque(data)

dx=[-1,1,0,0]
dy=[0,0,-1,1]

while q:
  virus, _s, _x, _y=q.popleft()
  if _s==s: # 시간이 되면 빠져나오기
    break
  
  # 현재 위치에서 4방향 보기
  for i in range(4):
    _nx=_x+dx[i]
    _ny=_y+dy[i]
    if _nx>=0 and _ny>=0 and _ny<n and _nx<n:
      if test[_nx][_ny]==0:
        q.append((virus, _s+1, _nx, _ny))
        test[_nx][_ny]=virus

print(test[x-1][y-1])
  
  

'코딩 테스트 > DFS, BFS' 카테고리의 다른 글

연산자 끼워넣기  (0) 2021.01.31
괄호 변환  (0) 2021.01.29
연구소  (0) 2021.01.26
특정 거리의 도시 찾기  (0) 2021.01.26
미로 탈출  (0) 2021.01.25

댓글