
def DFS(x,y):
global cnt
#단지 범위를 넘어가면 종료
if x >= n or x < 0 or y >= n or y < 0:
return False
if graph[x][y] == 1:
cnt += 1
#다시 방문하지 않기 위해서 0으로 만들어준다.
graph[x][y] = 0
#대각선의 범위는 담색허용 하지 않기 때문에 상하좌우로 살펴보도록 한다.
DFS(x-1,y)
DFS(x+1,y)
DFS(x,y-1)
DFS(x,y+1)
return True
return False
n = int(input())
graph = []
cnt = 0
for i in range(n):
graph.append(list(map(int,input())))
res = 0
resultLIST= []
for i in range(n):
for j in range(n):
if DFS(i,j) == True:
res+=1
resultLIST.append(cnt)
cnt = 0
print(res)
resultLIST.sort()
for i in resultLIST:
print(i)
#RES는 True인 부분을 덩어리로 한 묶음으로 세어주고 (단지의 수를 세어줌.)
# DFS로 CNT를 구해준 뒤
# TRUE인 부분을 다시 돌면서 최종적인 단지라고 묶인 부분의 숫자를 counting 해준다.
'문제풀이 > 백준(Boj) 문제풀이' 카테고리의 다른 글
[백준][DFS] 2468. 안전 영역 (파이썬/Python) (0) | 2021.12.03 |
---|---|
[백준][DFS] 1012. 유기농 배추 (파이썬/Python) (0) | 2021.12.02 |
[백준][큐 & 덱] 11866. 요세푸스 문제 (파이썬/Python) (0) | 2021.11.18 |
[백준][큐 & 덱] 18258. 큐 2 (파이썬/Python) (0) | 2021.11.17 |
[백준][스택] 17298. 오큰수 (파이썬/Python) (0) | 2021.11.16 |