알고리즘 문제풀이/백준
백준 2667 #2
Homil-Rye
2023. 5. 17. 22:48
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
반응형