황소개발자

백준 2667 파이썬 python : 단지번호붙이기 @@황소처럼 우직하게@@ 본문

백준 문제 풀이

백준 2667 파이썬 python : 단지번호붙이기 @@황소처럼 우직하게@@

hjp845 2020. 3. 2. 19:52
반응형
import sys
input = sys.stdin.readline

dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]

def bfs(y, x, count, total):
    q = [[y, x]]
    mat[y][x] = count
    total += 1
    while q:
        now = q.pop(0)
        for i in range(4):
            ny = now[0] + dy[i]
            nx = now[1] + dx[i]
            if 0 <= nx < n and 0 <= ny < n and mat[ny][nx] == 1:
                q.append([ny, nx])
                mat[ny][nx] = count
                total += 1
    return total

n = int(input())
mat = [[] for i in range(n)]
for i in range(n):
    ss = input().strip()
    for s in ss:
        mat[i].append(int(s))

count = 2
totales = []
for i in range(n):
    for j in range(n):
        if mat[i][j] == 1:
            totales.append(bfs(i, j, count, 0))
            count += 1
print(count - 2)
totales.sort()
for total in totales:
    print(total)

1하고 겹쳐서 count는 2부터 시작한다음에 마지막에 2빼줫어요

반응형
Comments