문제
https://www.acmicpc.net/problem/2468
코드
import sys
sys.setrecursionlimit(100000)
n = int(input())
graph = [list(map(int, input().split())) for _ in range(n)]
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(r, c):
visited[r][c] = 1
for i in range(4):
nx = r + dx[i]
ny = c + dy[i]
if 0 <= nx < n and 0 <= ny < n:
if array[nx][ny] == 1 and visited[nx][ny] == 0:
dfs(nx, ny)
max_h = 0
for i in range(n):
max_h = max(max_h, max(graph[i]))
result = 0
for i in range(0, max_h):
count = 0
visited = [[0] * n for _ in range(n)]
array = [[0] * n for _ in range(n)]
for j in range(n):
for k in range(n):
if graph[j][k] > i:
array[j][k] = 1
for j in range(n):
for k in range(n):
if array[j][k] == 1 and visited[j][k] == 0:
dfs(j, k)
count += 1
result = max(result, count)
print(result)
'문제풀이 > DFS & BFS' 카테고리의 다른 글
[파이썬] [DFS] 백준 2668 숫자고르기 (0) | 2023.02.14 |
---|---|
[파이썬] [BFS] 백준 27211 도넛 행성 (0) | 2023.01.17 |
@[파이썬] [DFS] 백준 1012 유기농 배추 (0) | 2022.12.27 |
@[파이썬] [BFS] 백준 2178 미로 탐색 (0) | 2022.12.26 |
[파이썬] [DFS] 백준 1759 암호 만들기 (0) | 2022.05.27 |