아직 계정이 없으신가요? 회원가입

Dev. Talk

동계테스트 런타임오류

회원사진ted6345
79 views2022-09-24 12:05

동계테스트 3,4 6,7 10,11 런타임 오류가 나는데 ㅜㅜ

어디서 틀린건지 잘 안보이네요 ㅜㅜ

import sys



# 입력부.
N, M = map(int,sys.stdin.readline().split())
mat = []
for i in range(N):
    tmp = list(map(int,sys.stdin.readline().split()))
    mat.append(tmp)


AIR = 0
ICE = 1
VISIT = 2

def dfs(x,y):
    # 범위를 나가는 경우 return
    if x<0 or x>=N or y<0 or y>=M:
        return 0
    # 공기를 만나면 VISIT으로 바꿈
    if (mat[x][y] == AIR):
        mat[x][y] = VISIT #visited, 외부공기
        return 1 + dfs(x-1,y) + dfs(x,y-1) + dfs(x+1,y) + dfs(x,y+1)
    else:
        return 0


def melt():
    for i in range(N):
        for j in range(M):
            if(mat[i][j] == ICE):
                count = 0
                for x,y in [(i-1,j),(i,j-1),(i+1,j),(i,j+1)]:
                    if(mat[x][y] == VISIT):
                        count+=1
                if(count >= 2):
                    mat[i][j] = AIR


def clear():
    for i in range(N):
        for j in range(M):
            if(mat[i][j] == VISIT):
                mat[i][j] = AIR
   


time = 0
while dfs(0,0) < (N*M):
    melt()
    time +=1
    clear()
    
print(time)