728x90
반응형
재귀함수를 사용한 두 번째 풀이.
코드 길이 단축.
def dfs(x, y):
global count
if x < 0 or x >= N or y < 0 or y >= N or grid[x][y] == 0:
return
grid[x][y] = 0 # 방문한 집은 0으로 표시
count += 1
dfs(x-1, y) # 상
dfs(x+1, y) # 하
dfs(x, y-1) # 좌
dfs(x, y+1) # 우
N = int(input())
grid = [list(map(int, input().strip())) for _ in range(N)]
counts = []
for i in range(N):
for j in range(N):
if grid[i][j] == 1:
count = 0
dfs(i, j)
counts.append(count)
counts.sort()
print(len(counts))
for count in counts:
print(count)
728x90
반응형
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
백준 14888 (0) | 2023.05.23 |
---|---|
백준 2468 (0) | 2023.05.22 |
백준 2798 #2 (0) | 2023.05.17 |
백준 10819 #2 (0) | 2023.05.17 |
백준 2294 (0) | 2023.04.13 |