hugDog
Android DevLog
hugDog
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ™Œ Hello? (162)
    • ๐Ÿงฉ์•ˆ๋“œ๋กœ์ด๋“œ (12)
      • ๊ฐœ๋… ์ •๋ฆฌ (5)
      • ๋ฒ„๊ทธ ํ•ด๊ฒฐ (4)
      • ๊ธฐํƒ€ (3)
    • ๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜ (54)
      • ๊ฐœ๋… (0)
      • ๋ฐฑ์ค€ (48)
      • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค (6)
    • ๐Ÿ“„๊ฐœ๋ฐœ ์ผ์ง€ (0)
      • FINPO (0)
    • ๐Ÿ”คํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด (71)
      • C++ ์ •๋ฆฌ (49)
      • C++๊ธฐ์ดˆํ”Œ๋Ÿฌ์Šค ์—ฐ์Šต๋ฌธ์ œ (20)
      • Kotlin (2)
    • โญProject (1)
    • ๐ŸšดTIL (13)
      • Clean Code (13)
    • ๐Ÿšฉ๊ธฐํƒ€ (9)
      • ๋ชฉํ‘œ (6)
      • ์ผ์ƒ (3)
      • ๋ฌธ์„œ (0)

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
hugDog
๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2573๋ฒˆ: ๋น™์‚ฐ

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2573๋ฒˆ: ๋น™์‚ฐ
๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€

[Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2573๋ฒˆ: ๋น™์‚ฐ

2022. 1. 16. 17:34
728x90

๋ฌธ์ œ

 

ํ’€์ด

DFS๋ฌธ์ œ, ๋‹ค๋งŒ ์กฐ๊ธˆ ๊นŒ๋‹ค๋กญ๊ฒŒ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

"๋งŒ์ผ ์ „๋ถ€ ๋‹ค ๋…น์„ ๋•Œ๊นŒ์ง€ ๋‘ ๋ฉ์–ด๋ฆฌ ์ด์ƒ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์œผ๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ 0์„ ์ถœ๋ ฅํ•œ๋‹ค." ํ•ด๋‹น ์กฐ๊ฑด์„ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์•„ 62%์—์„œ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค๊ฐ€ ๋‚˜์™”๋‹ค.

 

[๋ฐ˜๋ก€]

5 5
0 0 0 0 0
0 2 2 2 0
0 2 2 2 0
0 2 2 2 0
0 0 0 0 0

๋‹ต : 0

ํ‹€๋ฆฐ ๋‹ต : 3

 

๋˜ํ•œ DFS๋กœ ํ’€ ๊ฒฝ์šฐ

sys.setrecursionlimit(10**4)

setreucrsionlimit์— ๋„ˆ๋ฌด ํฐ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋ฉ”๋ชจ๋ฆฌ ์ดˆ๊ณผ๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ฃผ์˜ํ•  ๊ฒƒ!!

 

์ฝ”๋“œ

import sys
sys.setrecursionlimit(10**4)
input = sys.stdin.readline

n, m = map(int, input().split())
graph = [list(map(int, input().split())) for _ in range(n)]

dir = ((0, 1), (0, -1), (1, 0), (-1, 0))

def check(i, j):
    return i < 0 or i >= n or j < 0 or j >= m

def searchZero(i, j):
    cnt = 0
    for dy, dx in dir:
        ni, nj = dy + i, dx + j
        if check(ni, nj) or graph[ni][nj] != 0: continue
        cnt += 1
    return cnt
    
#๋น™์‚ฐ ๋…น์Œ
def melt():
    meltStk = []
    for i in range(n):
        for j in range(m):
            if graph[i][j] != 0:
                meltStk.append((i, j, searchZero(i, j)))
    
    for i, j, delIce in meltStk:
        graph[i][j] -= delIce
        if graph[i][j] < 0:
            graph[i][j] = 0
            
#์—ฐ๊ฒฐ๋œ ๋น™์‚ฐ ํŒŒ์•…
def dfs(i, j):
    visited[i][j] = True
    for dy, dx in dir:
        ni, nj = dy + i, dx + j
        if check(ni, nj) or visited[ni][nj] or not graph[ni][nj]: continue
        dfs(ni, nj)

cnt = 0
while True:
    visited = [[False] * m for _ in range(n)]
    ice = 0
    for i in range(n):
        for j in range(m):
            if not visited[i][j] and graph[i][j]:
                dfs(i, j)
                ice += 1
    if ice == 1:    
        melt() 
        cnt += 1
        continue
    if ice == 0:
        print(0)
        break
    print(cnt)
    break

 

๋งˆ๋ฌด๋ฆฌ

dfs๋Š” ์—ญ์‹œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ ๊ฐ™๋‹ค.

 

728x90
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ (์ƒˆ์ฐฝ์—ด๋ฆผ)
  • ๋ฌธ์ œ
  • ํ’€์ด
  • ์ฝ”๋“œ
  • ๋งˆ๋ฌด๋ฆฌ
'๐Ÿ”์•Œ๊ณ ๋ฆฌ์ฆ˜/๋ฐฑ์ค€' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 16947๋ฒˆ: ์„œ์šธ ์ง€ํ•˜์ฒ  2ํ˜ธ์„ 
  • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 3584๋ฒˆ: ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๊ณตํ†ต ์กฐ์ƒ
  • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2668๋ฒˆ: ์ˆซ์ž๊ณ ๋ฅด๊ธฐ
  • [Python/ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 9466๋ฒˆ: ํ…€ ํ”„๋กœ์ ํŠธ
hugDog
hugDog
์•ˆ๋“œ๋กœ์ด๋“œ ๊ณต๋ถ€ ์ค‘์ธ ํ•™์ƒ์ž…๋‹ˆ๋‹ค!

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๊ฐœ์ธ์ •๋ณด

  • ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ
  • ํฌ๋Ÿผ
  • ๋กœ๊ทธ์ธ

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.