hskim9337   1년 전

얼핏 생각해봐도 문제에서 최대값이 8x8 이니까

모든 경우의 수를 다 검사해도

64C3 이니까 총 경우의수가 5만개도 안되는데 이 경우에서 시간초과가 날 수가 있나요?

choko100   1년 전

안녕하세요, dfs() 함수 안에서 n x m 탐색을 3번 한 후에, virus의 시작점을 찾기 위해 n x m 탐색을 1번 더 하고, 그 안에서 virus() 함수를 진입하면 재귀로 거의 n x m 정도가 또 호출되지 않을까 싶습니다.

(1) dfs 함수에서 count 가 0에서 3이 될 때까지 이중 포문 3번

def dfs(count):

    for i in range(n): // 44 번 라인

        for j in range(m):

64 x 64 x 64 = 262,144

(2) dfs 함수에서 virus() 를 호출할 때 이중 포문 추가

def dfs(count):

    if count == 3:

        for i in range(n): // 37 번 라인

            for j in range(m):

262,144 x 64 = 16,777,216

(3) virus 함수에서 0 인 곳을 모두 2 로 만들 때까지 재귀 진행

16,777,216 x 64 = 1,073,741,824

hskim9337   1년 전

감사합니다 이해했습니다.

댓글을 작성하려면 로그인해야 합니다.