[Python] λ°±μ€€ 7569 - ν† λ§ˆν† 

2021. 1. 25. 00:32Β·Algorithm

문제

철수의 ν† λ§ˆν†  농μž₯μ—μ„œλŠ” ν† λ§ˆν† λ₯Ό λ³΄κ΄€ν•˜λŠ” 큰 μ°½κ³ λ₯Ό κ°€μ§€κ³  μžˆλ‹€. ν† λ§ˆν† λŠ” μ•„λž˜μ˜ κ·Έλ¦Όκ³Ό 같이 격자λͺ¨μ–‘ μƒμžμ˜ 칸에 ν•˜λ‚˜μ”© 넣은 λ‹€μŒ, μƒμžλ“€μ„ 수직으둜 μŒ“μ•„ μ˜¬λ €μ„œ 창고에 λ³΄κ΄€ν•œλ‹€.

창고에 λ³΄κ΄€λ˜λŠ” ν† λ§ˆν† λ“€ μ€‘μ—λŠ” 잘 읡은 것도 μžˆμ§€λ§Œ, 아직 읡지 μ•Šμ€ ν† λ§ˆν† λ“€λ„ μžˆμ„ 수 μžˆλ‹€. 보관 ν›„ ν•˜λ£¨κ°€ μ§€λ‚˜λ©΄, 읡은 ν† λ§ˆν† λ“€μ˜ μΈμ ‘ν•œ 곳에 μžˆλŠ” 읡지 μ•Šμ€ ν† λ§ˆν† λ“€μ€ 읡은 ν† λ§ˆν† μ˜ 영ν–₯을 λ°›μ•„ 읡게 λœλ‹€. ν•˜λ‚˜μ˜ ν† λ§ˆν† μ— μΈμ ‘ν•œ 곳은 μœ„, μ•„λž˜, μ™Όμͺ½, 였λ₯Έμͺ½, μ•ž, λ’€ μ—¬μ„― λ°©ν–₯에 μžˆλŠ” ν† λ§ˆν† λ₯Ό μ˜λ―Έν•œλ‹€. λŒ€κ°μ„  λ°©ν–₯에 μžˆλŠ” ν† λ§ˆν† λ“€μ—κ²ŒλŠ” 영ν–₯을 μ£Όμ§€ λͺ»ν•˜λ©°, ν† λ§ˆν† κ°€ 혼자 μ €μ ˆλ‘œ μ΅λŠ” κ²½μš°λŠ” μ—†λ‹€κ³  κ°€μ •ν•œλ‹€. μ² μˆ˜λŠ” 창고에 λ³΄κ΄€λœ ν† λ§ˆν† λ“€μ΄ 며칠이 μ§€λ‚˜λ©΄ λ‹€ 읡게 λ˜λŠ”μ§€ κ·Έ μ΅œμ†Œ 일수λ₯Ό μ•Œκ³  μ‹Άμ–΄ ν•œλ‹€.

ν† λ§ˆν† λ₯Ό 창고에 λ³΄κ΄€ν•˜λŠ” 격자λͺ¨μ–‘μ˜ μƒμžλ“€μ˜ 크기와 읡은 ν† λ§ˆν† λ“€κ³Ό 읡지 μ•Šμ€ ν† λ§ˆν† λ“€μ˜ 정보가 μ£Όμ–΄μ‘Œμ„ λ•Œ, 며칠이 μ§€λ‚˜λ©΄ ν† λ§ˆν† λ“€μ΄ λͺ¨λ‘ μ΅λŠ”μ§€, κ·Έ μ΅œμ†Œ 일수λ₯Ό κ΅¬ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λΌ. 단, μƒμžμ˜ 일뢀 μΉΈμ—λŠ” ν† λ§ˆν† κ°€ λ“€μ–΄μžˆμ§€ μ•Šμ„ μˆ˜λ„ μžˆλ‹€.

 

μž…λ ₯

첫 μ€„μ—λŠ” μƒμžμ˜ 크기λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 두 μ •μˆ˜ M,Nκ³Ό μŒ“μ•„μ˜¬λ €μ§€λŠ” μƒμžμ˜ 수λ₯Ό λ‚˜νƒ€λ‚΄λŠ” Hκ°€ μ£Όμ–΄μ§„λ‹€. M은 μƒμžμ˜ κ°€λ‘œ 칸의 수, N은 μƒμžμ˜ μ„Έλ‘œ 칸의 수λ₯Ό λ‚˜νƒ€λ‚Έλ‹€. 단, 2 ≤ M ≤ 100, 2 ≤ N ≤ 100, 1 ≤ H ≤ 100 이닀. λ‘˜μ§Έ μ€„λΆ€ν„°λŠ” κ°€μž₯ λ°‘μ˜ μƒμžλΆ€ν„° κ°€μž₯ μœ„μ˜ μƒμžκΉŒμ§€μ— μ €μž₯된 ν† λ§ˆν† λ“€μ˜ 정보가 μ£Όμ–΄μ§„λ‹€. 즉, λ‘˜μ§Έ 쀄뢀터 N개의 μ€„μ—λŠ” ν•˜λ‚˜μ˜ μƒμžμ— λ‹΄κΈ΄ ν† λ§ˆν† μ˜ 정보가 μ£Όμ–΄μ§„λ‹€. 각 μ€„μ—λŠ” μƒμž κ°€λ‘œμ€„μ— λ“€μ–΄μžˆλŠ” ν† λ§ˆν† λ“€μ˜ μƒνƒœκ°€ M개의 μ •μˆ˜λ‘œ μ£Όμ–΄μ§„λ‹€. μ •μˆ˜ 1은 읡은 ν† λ§ˆν† , μ •μˆ˜ 0 은 읡지 μ•Šμ€ ν† λ§ˆν† , μ •μˆ˜ -1은 ν† λ§ˆν† κ°€ λ“€μ–΄μžˆμ§€ μ•Šμ€ 칸을 λ‚˜νƒ€λ‚Έλ‹€. μ΄λŸ¬ν•œ N개의 쀄이 H번 λ°˜λ³΅ν•˜μ—¬ μ£Όμ–΄μ§„λ‹€.

ν† λ§ˆν† κ°€ ν•˜λ‚˜ 이상 μžˆλŠ” 경우만 μž…λ ₯으둜 μ£Όμ–΄μ§„λ‹€.

 

좜λ ₯

μ—¬λŸ¬λΆ„μ€ ν† λ§ˆν† κ°€ λͺ¨λ‘ 읡을 λ•ŒκΉŒμ§€ μ΅œμ†Œ 며칠이 κ±Έλ¦¬λŠ”μ§€λ₯Ό κ³„μ‚°ν•΄μ„œ 좜λ ₯ν•΄μ•Ό ν•œλ‹€. λ§Œμ•½, μ €μž₯될 λ•ŒλΆ€ν„° λͺ¨λ“  ν† λ§ˆν† κ°€ μ΅μ–΄μžˆλŠ” μƒνƒœμ΄λ©΄ 0을 좜λ ₯ν•΄μ•Ό ν•˜κ³ , ν† λ§ˆν† κ°€ λͺ¨λ‘ μ΅μ§€λŠ” λͺ»ν•˜λŠ” 상황이면 -1을 좜λ ₯ν•΄μ•Ό ν•œλ‹€.


μ •λ‹΅

from collections import deque
q = deque()
n, m, h = map(int, input().split())

#ν† λ§ˆν†  μ €μž₯μ†Œ
tomato = [[list(map(int, input().split())) for _ in range(m)] for _ in range(h)]

#λ‚ μ§œ μ €μž₯μ†Œ
day = [[[0] * n for _ in range(m)]for _ in range(h)]

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

#읡은 ν† λ§ˆν†  큐에 μ €μž₯
for i in range(h):
    for j in range(m):
        for k in range(n):
            if tomato[i][j][k] == 1:
                q.append((i, j, k))
    
while q:
    x, y, z = q.popleft()
    #μ—¬μ„― λ°©ν–₯ 검사
    for i in range(6):
        xx = x + dx[i]
        yy = y + dy[i]
        zz = z + dz[i]
        if 0 <= xx < h and 0 <= yy < m and 0 <= zz < n and tomato[xx][yy][zz] == 0:
                tomato[xx][yy][zz] = 1
                day[xx][yy][zz] = day[x][y][z] + 1
                q.append((xx, yy, zz))

flag = 1
for i in tomato:
    for j in i:
        if 0 in j:
            flag = 0

res = 0
for i in day:
    for j in i:
        day_max = max(j)
        res = max(res, day_max)

if flag == 1:
    print(res)
else:
    print(-1)

μ €λ²ˆ λ¬Έμ œμ™€ λΉ„μŠ·ν•œλ° 이건 3차원이닀.

λΉ„μŠ·ν•˜κ²Œ ν’€μ—ˆλŠ”λ° μ‹œκ°„μ΄ˆκ³Όκ°€ λ‚˜μ„œ 밑뢀뢄을 μˆ˜μ •ν–ˆλ‹€.

'Algorithm' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

[Python] λ°±μ€€ 15649 - Nκ³Ό M  (0) 2021.01.30
[Python] λ°±μ€€ 5355 - ν™”μ„± μˆ˜ν•™  (0) 2021.01.25
[Python] λ°±μ€€ 7576 - ν† λ§ˆν†   (0) 2021.01.24
[Python] 2164 - μΉ΄λ“œ2  (0) 2021.01.11
[Python] 18258 - 큐 2  (0) 2021.01.11
'Algorithm' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
  • [Python] λ°±μ€€ 15649 - Nκ³Ό M
  • [Python] λ°±μ€€ 5355 - ν™”μ„± μˆ˜ν•™
  • [Python] λ°±μ€€ 7576 - ν† λ§ˆν† 
  • [Python] 2164 - μΉ΄λ“œ2
πŸ₯­Mango
πŸ₯­Mango
  • πŸ₯­Mango
    AppleMangoπŸ₯­
    πŸ₯­Mango
  • 전체
    였늘
    μ–΄μ œ
    • λΆ„λ₯˜ 전체보기
      • iOS
        • Swift
        • SwiftUI
        • RxSwift
      • Algorithm
        • C
        • Python
        • Swift
      • Computer Science
        • 컴퓨터 λ„€νŠΈμ›Œν¬
        • OS
      • ...
      • 개발 νƒ€μž„μΊ‘μŠ
        • Python
        • Flutter
        • Android
        • Kotlin
        • Java
  • λΈ”λ‘œκ·Έ 메뉴

    • ν™ˆ
    • νƒœκ·Έ
    • λ°©λͺ…둝
  • 링크

  • 곡지사항

  • 인기 κΈ€

  • νƒœκ·Έ

    파이썬 14503
    μ½”ν‹€λ¦°
    파이썬 μ •λ ¬
    Custom Map Marker
    Swift Hello World!
    ν† λ§ˆν† 
    파이썬
    파이썬 6118
    MapMarker
    SwiftUI Apple Login
    1차원 λΏŒμš”λΏŒμš”
    λ°±μ€€ μ†Œμˆ˜
    swiftUI tabview
    μ½”ν‹€λ¦° 상속
    IOS
    Code Base
    λ°±μ€€ ν† λ§ˆν† 
    14503 λ‘œλ΄‡μ²­μ†ŒκΈ°
    파이썬 1459
    14503 파이썬
    μŠ€νƒ
    Apple Login
    SwiftUI
    파이썬 ν† λ§ˆν† 
    swiftUI Gradients
    1613 역사
    역사 파이썬
    1613 파이썬
    6118
    typing animation
  • 졜근 λŒ“κΈ€

  • 졜근 κΈ€

  • hELLOΒ· Designed Byμ •μƒμš°.v4.10.2
πŸ₯­Mango
[Python] λ°±μ€€ 7569 - ν† λ§ˆν† 
μƒλ‹¨μœΌλ‘œ

ν‹°μŠ€ν† λ¦¬νˆ΄λ°”