본문 바로가기
알고리즘 문제풀이/백준

백준 2667 #2

by Hoseok 2023. 5. 17.
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