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
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 1107 리모컨 (0) | 2023.03.20 |
|---|---|
| [파이썬] 백준 1759 암호 만들기 (0) | 2023.03.19 |
| [파이썬] 백준 23561 Young한 에너지는 부족하다 (0) | 2023.03.13 |
| [파이썬] 백준 1697 숨바꼭질 (0) | 2023.02.22 |
| [파이썬] 백준 2562 최댓값 (0) | 2022.12.30 |