heheh
히히
heheh
전체 방문자
오늘
어제
  • 히히 (75)
    • AI (14)
      • Model (Study) (3)
      • Model (Paper) (7)
      • Tip! (4)
    • Backend (3)
      • ASP.NET (1)
      • Spring (2)
      • program (0)
      • JAVA (0)
    • Program (11)
      • Docker (3)
      • Github (5)
      • AWS (3)
    • OS (1)
      • Window (1)
      • Linux (0)
    • Python (14)
      • Python Lib (11)
      • Pytorch (1)
      • Tensorflow (1)
      • 크롤링 (1)
    • Spark (3)
      • Scala (2)
      • Pyspark (0)
      • SQL (1)
    • IOS (Swift) (0)
      • 기본 개념 (0)
    • 프로젝트 (3)
      • [AI] GAN (0)
      • [IOS] Swift (3)
      • [AI] 추천시스템 (0)
    • 분석 (1)
    • 알고리즘 풀이 (22)
      • 백준 (22)
    • 기타 (3)
      • 장비세팅 (3)
      • 소개 (0)

인기 글

최근 글

최근 댓글

hELLO · Designed By 정상우.
heheh

히히

알고리즘 풀이/백준

백준 7576번 : 토마토 (Python)

2021. 1. 21. 21:37

문제 : www.acmicpc.net/problem/7576

 

7576번: 토마토

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

www.acmicpc.net

 

풀이

먼저 반복문을 돌아 notyet에 익지 않은 토마토 개수를 저장하고, 익은 토마토를 큐에 쌓는다.

큐에서 pop했을 때 상하좌우중 익지 않은 토마토(0)일 경우 0을 익은 토마토의 넘버 + 1로 변경한 뒤 좌표를 큐에 쌓는다.

큐가 끝났는데 notyet이 남아있다면 -1, 아니라면 마지막 토마토 넘버 - 1 을 출력한다.

from collections import deque

M, N = map(int, input().split())                  # 입력
tomato = []
for i in range (N):
    tomato.append(list(map(int, input().split())))

que = deque()                                     # 초기화
notyet = 0
for i in range(N):
    for j in range(M):
        if tomato[i][j] == 0:
            notyet += 1
        if tomato[i][j] == 1:
            que.append((i,j))
a = [1,-1,0,0]
b = [0,0,1,-1]


while que:                                        # 실행
    x,y = que.popleft()
    day = tomato[x][y]-1

    for i in range(4):
        if 0<=x+a[i]<N and 0<=y+b[i]<M:
            if tomato[x+a[i]][y+b[i]] == 0:
                tomato[x+a[i]][y+b[i]] = tomato[x][y]+1
                que.append((x+a[i],y+b[i]))
                notyet -= 1
                


if notyet == 0:
    print(day)
else:
    print('-1')

'알고리즘 풀이 > 백준' 카테고리의 다른 글

백준 2579번 : 계단 오르기  (0) 2021.02.01
백준 9095번 : 1, 2, 3 더하기  (0) 2021.02.01
백준 12865번 : 평범한 배낭 (Python)  (0) 2021.01.16
백준 2606번 : 바이러스 (Python)  (0) 2021.01.15
백준 1463번 : 1로 만들기  (0) 2021.01.14
    heheh
    heheh

    티스토리툴바