-문제 : https://www.acmicpc.net/problem/2667
스스로 푼 문제다! 전에 풀었을 때는 아쉽게 답지를 봤던 것 같은데, 이번에는 5트만에 정답이었다
dfs문제이고, gloabl count로 각 단지의 수를 구하는 것이 요점인 것 같다.
그리고 탐색 시작하는 지점 방문처리하고 시작하는 것도!
-정답 풀이 :
n=int(input())
data=[]
for _ in range(n):
data.append(list(map(int,input())))
dx=[-1,1,0,0]
dy=[0,0,-1,1]
result=[]
def dfs(x,y):
global count
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0<= ny < n :
if data[nx][ny] and not visit[nx][ny]:
visit[nx][ny]=1
count+=1
dfs(nx,ny)
visit=[[0]*n for _ in range(n)]
for i in range(n):
for j in range(n):
if not visit[i][j] and data[i][j]==1:
visit[i][j]=1
count=1
dfs(i,j)
result.append(count)
print(len(result))
result.sort()
for i in range(len(result)):
print(result[i])
'백준 > Search' 카테고리의 다른 글
[dfs/백준] 11724번 : 연결 요소의 개수 (0) | 2022.07.21 |
---|---|
[dfs/백준] 2606번 : 바이러스 (0) | 2022.07.20 |
[그리디/백준] 11051번 : 주식 (0) | 2022.07.16 |
[백준/이진탐색] 2110번: 공유기 설치 (0) | 2022.05.15 |
[zoho 인터뷰/이진탐색] 정렬된 배열에서 특정 수의 개수 구하기 (0) | 2022.05.12 |