티스토리 뷰
[Gold V] 토마토 - 7576
성능 요약
메모리: 224104 KB, 시간: 620 ms
분류
너비 우선 탐색(bfs), 그래프 이론(graphs), 그래프 탐색(graph_traversal)
import sys
from collections import deque
input = sys.stdin.readline
dx, dy = [0, 0, 1, -1], [-1, 1, 0, 0]
def bfs():
while q:
x, y = q.popleft()
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m and not visited[nx][ny] and graph[nx][ny] == 0:
graph[nx][ny] = graph[x][y] + 1
visited[nx][ny] = 1
q.append([nx, ny])
# m : 가로 칸수 n : 세로 칸수
m, n = map(int, input().split())
graph = []
# 그래프 값 채워넣기
for x in range(n):
graph.append(list(map(int, input().split())))
roti_sw = True
q = deque()
visited = [list(0 for _ in range(m)) for _ in range(n)]
for x in range(n):
for y in range(m):
if graph[x][y] == 1:
q.append([x, y])
else:
roti_sw = False
# 토마토가 전부 익어있음 ;;
if roti_sw:
print(0)
sys.exit(0)
bfs()
for x, value in enumerate(graph):
for y, value2, in enumerate(value):
# 안익은 토마토가 존재한다면
if graph[x][y] == 0:
print(-1)
sys.exit(0)
print(max(map(max, graph)) - 1)
'코딩테스트 > 백준' 카테고리의 다른 글
파이썬 | 14502 _ 연구소 _G5 (0) | 2022.07.13 |
---|---|
파이썬 | 10026 _ 적록색약 _ G5 (0) | 2022.07.12 |
파이썬 | 5014 _ 스타트링크 _ G5 (0) | 2022.07.08 |
파이썬 | 2589_보물섬_G5 (0) | 2022.07.07 |
파이썬 | 16918 봄버맨 _ S1 (0) | 2022.07.04 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 프로그래머스
- 킹
- 구현
- 백준
- ASCII코드
- 2진수
- 프로그래머스 # 음양더하기
- 브루트포스
- 코딩테스트
- 자료표현
- stack
- 크레인 인형뽑기 게임
- Git
- 인형뽑기
- K번째수
- 2019 카카오 개발자 겨울 인턴십
- java
- 오
- 1063
- 자료구조
- 10진수
- solved.ac
- 카카오 코딩테스트
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함