문제
https://www.acmicpc.net/problem/2667
2667번: 단지번호붙이기
<그림 1>과 같이 정사각형 모양의 지도가 있다. 1은 집이 있는 곳을, 0은 집이 없는 곳을 나타낸다. 철수는 이 지도를 가지고 연결된 집의 모임인 단지를 정의하고, 단지에 번호를 붙이려 한다. 여
www.acmicpc.net
코드
dx=[-1,1,0,0]
dy=[0,0,-1,1]
def dfs(r,c,k):
visited[r][c]=k
for i in range(4):
nx=r+dx[i]
ny=c+dy[i]
if 0<=nx<n and 0<=ny<n and array[nx][ny]==1 and visited[nx][ny]==0:
visited[nx][ny]=k
dfs(nx,ny,k)
n=int(input())
array=[list(map(int, list(input().rstrip()))) for _ in range(n)]
visited=[[0]*n for _ in range(n)]
count=0
k=2
for i in range(n):
for j in range(n):
if visited[i][j]==0 and array[i][j]==1:
dfs(i,j,k)
count+=1
k+=1
result=[]
for k in range(count):
countk = 0
for i in range(n):
for j in range(n):
if visited[i][j]==k+2:
countk+=1
result.append(countk)
result.sort()
print(count)
for i in result:
print(i)
'문제풀이 > DFS & BFS' 카테고리의 다른 글
[파이썬] [BFS] 백준 7569 토마토 (0) | 2022.04.02 |
---|---|
[파이썬] [BFS] 백준 3055 탈출 (0) | 2022.03.23 |
[파이썬] [BFS] Pro 경주로 건설 (0) | 2022.02.23 |
[파이썬] [DFS] Pro 여행경로 (0) | 2022.02.19 |
[파이썬] [BFS] Pro 단어 변환 (0) | 2022.02.18 |