[DFS/BFS] 2667-단지번호 붙이기

조은지·2021년 9월 5일
0

링크 - 단지번호 붙이기

import sys

sys.setrecursionlimit(10000)

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


N = int(input())

visited=[[False]*N for i in range(N)]

graph=[]

for i in range(N):
    line = map(int, input())
    graph.append([])
    for v in line:
        graph[i].append(v)

def dfs(x,y,count):
    visited[x][y]=True
    for i in range(len(dx)):
        nx=x+dx[i]
        ny=y+dy[i]
        if 0 <= nx <N and 0<= ny <N:
            if visited[nx][ny]==False and graph[nx][ny]==1:
                count = dfs(nx,ny,count+1)
        
    return count
                

result=[]
for i in range(N):
    for j in range(N):
        if visited[i][j]==False and graph[i][j]==1:
            result.append(dfs(i,j,1))

print(len(result))
result.sort()
for i in result:
    print(i)

dfs를 이용해서 풀었다.

탐색을 하면서 한칸씩 이동할 때 마다 count를 하나씩 증가시켜주었고, 그 값을 result 리스트에 추가시켰다.

0개의 댓글

관련 채용 정보