매 초마다 1~K까지 순서대로 전염되도록 구현한다면 최악의 경우 N * N * S = 200 * 200 * 10000으로 시간초과가 발생한다
따라서 queue에 현재 몇 초인지를 넣어주어 (s == S 경우 break) while문 한 번에 끝나도록 구현해주었다
import sys
from collections import deque
dx = (0, 0, -1, 1)
dy = (-1, 1, 0, 0)
def infection():
queue = []
for x in range(N):
for y in range(N):
if board[x][y] != 0:
queue.append((board[x][y], 0, x, y))
queue.sort(); queue = deque(queue)
while queue:
k, s, x, y = queue.popleft()
if s == S:
break
for i in range(4):
nx = x + dx[i]; ny = y + dy[i]
if 0 <= nx < N and 0 <= ny < N:
if board[nx][ny] == 0:
board[nx][ny] = k
queue.append((k, s+1, nx, ny))
N, K = map(int, sys.stdin.readline()[:-1].split())
board = []
for n in range(N):
board.append(list(map(int, sys.stdin.readline()[:-1].split())))
S, X, Y = map(int, sys.stdin.readline()[:-1].split()); X -= 1; Y -= 1
infection()
print(board[X][Y])