공부 기록장
[백준 - Python] 1926. 그림 (DFS/BFS) 본문
https://www.acmicpc.net/problem/1926
코드
import sys
sys.setrecursionlimit(10**6)
input = sys.stdin.readline
n, m = map(int, input().split())
draw = []
for _ in range(n):
draw.append(list(map(int, input().split())))
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x, y):
global area
area += 1
draw[x][y] = 0
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= n or ny < 0 or ny >= m:
continue
if draw[nx][ny] == 1:
dfs(nx, ny)
areas = []
for i in range(n):
for j in range(m):
if draw[i][j] == 1:
area = 0
dfs(i, j)
areas.append(area)
print(len(areas))
if len(areas) == 0:
print(0)
exit(0)
areas.sort()
max_area = areas.pop()
print(max_area)
풀어본 유형이었다.
DFS로 풀어보았다.
그림이 하나도 없는 경우에 대한 처리를 해주지 않아서,
len(areas) == 0 인 경우에 areas.pop()이 되면서 런타임 에러가 떴다.
엣지 케이스들을 잘 처리해주자 !
'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글
[백준 - Python] 1068. 트리 (DFS/BFS) (0) | 2024.01.16 |
---|---|
[백준 - Python] 7576. 토마토 (DFS/BFS) (0) | 2024.01.15 |
[백준 - Python] 1697. 숨바꼭질 (DFS/BFS) (0) | 2024.01.14 |
[백준 - Python] 2583. 영역 구하기 (DFS/BFS) (0) | 2024.01.14 |
[백준 - Python] 2468. 안전 영역 (DFS/BFS) (0) | 2024.01.14 |