가오리의 코딩일기

[2667] 단지번호 붙이기 본문

Python/백준

[2667] 단지번호 붙이기

류경혜 2022. 8. 21. 20:30

n = int(input())
graph = []
house = []

for _ in range(n):
    graph.append(list(map(int, input())))
    
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]

def dfs(x, y):
    if x < 0 or x >= n or y < 0 or y >= n:
        return False
    if graph[x][y] == 1:
        global count
        count += 1
        graph[x][y] = 0
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            dfs(nx, ny)
        return True
    return False

count = 0
result = 0
for i in range(n):
    for j in range(n):
        if dfs(i, j) == True:
            house.append(count)
            count = 0
            result += 1
house.sort()
print(result)
print(*house, sep='\n')

 

 

'Python > 백준' 카테고리의 다른 글

[2331] 반복수열  (0) 2022.08.21
[2178] 미로 탐색  (0) 2022.08.21
[10451] 순열 사이클  (0) 2022.08.21
[11724] 연결 요소의 개수  (0) 2022.08.21
[1406] 에디터  (0) 2022.08.15