자료구조 & 알고리즘/백준(Baekjoon)

백준 2667(파이썬) 단지번호붙이기

resilient 2021. 2. 3. 00:44
728x90
반응형

www.acmicpc.net/problem/2667

 

2667번: 단지번호붙이기

<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여

www.acmicpc.net

n = int(input())
graph =[]
for _ in range(n):
    graph.append(list(map(int,input())))
cnt =0
answer=[]
def dfs(x,y):
    global cnt
    if x<=-1 or x>=n or y<=-1 or y>=n:
        return False
    if graph[x][y]==1:
        graph[x][y]=0
        cnt += 1
        dfs(x-1,y)
        dfs(x,y-1)
        dfs(x+1,y)
        dfs(x,y+1)
        return True
    return False

result = 0
for i in range(n):
    for j in range(n):
        cnt=0
        if dfs(i,j) == True: 
            answer.append(cnt)
            result += 1
print(result)

for i in sorted(answer):
    print(i)
반응형