[Python] 백준 7576 - 토마토

2021. 11. 6. 22:35·IT/알고리즘
반응형

문제

https://www.acmicpc.net/problem/7576

 

7576번: 토마토

첫 줄에는 상자의 크기를 나타내는 두 정수 M,N이 주어진다. M은 상자의 가로 칸의 수, N은 상자의 세로 칸의 수를 나타낸다. 단, 2 ≤ M,N ≤ 1,000 이다. 둘째 줄부터는 하나의 상자에 저장된 토마토

www.acmicpc.net

문제 해결방법

bfs 로 해결 가능하다.

입력 조건으로 토마토는 1개이상이 들어갈수 있기 때문에 bfs 실행 전에 토마토의 위치를 큐에 넣어줘야 한다.
그 이후에 bfs 함수에서 인접열 방문시에 0(익지않은 토마토) 값이라면 기준열 토마토가 익는데 걸리시간에서 +1일을 해준다.

bfs 종료 후 만약 graph 내에 0이 아닌 값이 있다면 -1로 인해서 인접열 방문 실패한 경우이기 때문에 조건에 맞춰서 
-1 을 출력후 종료 그렇지 않다면 graph 내에 max_value-1이 답이다

문제 풀이

import sys
from collections import deque

M, N = map(int, sys.stdin.readline().strip().split())
graph = []
for _ in range(N):
    graph.append(list(map(int, sys.stdin.readline().strip().split(' '))))

queue = deque()
for i in range(M):
    for j in range(N):
        if graph[j][i] == 1:
            queue.append((i, j))

dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]

def bfs():
    while queue:
        x, y = queue.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if nx < 0 or nx >= M or ny < 0 or ny >= N:
                continue
            if graph[ny][nx] == 0:
                graph[ny][nx] = graph[y][x] + 1
                queue.append((nx, ny))

bfs()

max_value = 0
for i in range(M):
    for j in range(N):
        if graph[j][i] == 0:
            print(-1)
            exit()
        else:
            if max_value < graph[j][i]:
                max_value = graph[j][i]
print(max_value - 1)
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)
'IT/알고리즘' 카테고리의 다른 글
  • [백준] 7569 파이썬(python)
  • [Python] 백준 11724 - 연결 요소의 개수
  • [Python] 백준 1012 - 유기농 배추
  • [Python] 백준 2667 - 단지번호붙이기
상쾌한기분
상쾌한기분
  • 상쾌한기분
    상쾌한기분
    상쾌한기분
  • 전체
    오늘
    어제
    • 분류 전체보기 (251)
      • Python (44)
        • Python (26)
        • Django (6)
        • Flask (4)
        • Open Source (6)
      • Kotlin & Java (5)
        • Spring (2)
        • 프로젝트 (1)
      • Go (11)
      • Database (24)
        • MySQL (21)
        • Redis (3)
      • Infrastructure (2)
        • CDC (4)
        • Kafka (5)
        • Prometheus (2)
        • Fluentd (11)
        • Docker (1)
        • Airflow (2)
        • VPN (2)
      • IT (26)
        • AI (9)
        • Langchain (8)
        • Web (18)
        • Git (8)
        • 리팩토링 (9)
        • Micro Service Architecture (8)
        • Clean Code (16)
        • Design Pattern (0)
        • 수학 (1)
        • 알고리즘 (14)
      • OS (14)
        • Centos (10)
        • Ubuntu (3)
        • Mac (1)
      • Search Engine (2)
        • ElasticSearch (1)
        • Lucene Solr (1)
      • PHP (2)
        • Laravel (1)
        • Codeigniter (1)
  • 블로그 메뉴

    • Github 방문
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    오블완
    http
    fluentd
    티스토리챌린지
    Langchain
    백준
    prompt
    ollama
    python
    docker
    Redis
    MYSQL
    git
    performance
    파이썬
    Kafka
    LLM
    CDC
    go
    Golang
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
상쾌한기분
[Python] 백준 7576 - 토마토
상단으로

티스토리툴바