728x90

못풀었다. 최대한 bfs 를 사용하려고 했는데 부족한 부분이 많았다.

 

1. from collections import deque 를 해주지 않았다. deque 를 이용하지 않았다.

2. bfs 를 돌 때, dx dy 리스트를 만들어서 for 문을 돌려주면 번거로움을 덜 수 있다.

3. 주변에 의해 익어진 토마토를 1 값이 아닌 k[x][y] + 1 을 해주면 날짜를 계산을 할 수 가 있다.

4. bfs 를 다 돈 후, 익지 않은 토마토의 유무를 따지면 된다. 미리 할 필요가 없다.

def sums(k):
 
    answer = 0
 
    for i in range(0,len(k)):
        for j in range(0,len(k[0])):
            answer += k[i][j]
 
    return answer        
 
 
a,b = map(int,input().split(" "))
 
# a는 가로 b는 세로
 
k = [ ]
 
answer = 0
 
for i in range(0,b):
    q = list(map(int,input().split(" ")))
 
    k.append(q)
 
 
 
queue = [ ]
 
# 토마토가 익은 지역 queue 에 담기
 
for i in range(0,len(k)):
    for j in range(0,len(k[0])):
        if k[i][j] == 1:
            queue.append([i,j])
 
 
 
if sums(k)==0:
    print(-1)
 
else:    
 
    while queue:
 
 
        answer += 1
 
 
 
        temp = [ ]
 
        for i in range(0,len(queue)):
 
            x = queue[i][0]
            y = queue[i][1]
 
            k[x][y] = 1
 
            if x+1<b:
                temp.append([x+1,y])
 
            if 0<=x-1:
                temp.append([x-1,y])
 
            if y+1<a:
                temp.append([x,y+1])
 
            if 0<=y-1:
                temp.append([x,y-1])
 
 
        queue = temp
 
 
 
 
    print(answer)
 
 
 
 
 
 
 
 
 
728x90

+ Recent posts