접근
DFS 혹은 BFS 알고리즘을 이용하여 한 단지로 묶일 수 있는 집을 탐색하여 단지를 지정해준다.
알고리즘 기본 코드 참고 :
2021.04.11 - [코딩/백준 (Python)] - 백준 1260번: DFS와 BFS (Python)
아래 코드에서는 DFS 알고리즘을 이용하여 풀었다.
코드
import sys
n = int(sys.stdin.readline())
array = [list(map(int, sys.stdin.readline().rstrip())) for _ in range(n)]
assigned = [[0 for _ in range(n)] for __ in range(n)]
cnt = 1
count = []
def dfs(x, y):
global eachcnt
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
assigned[x][y] = cnt
eachcnt += 1
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < n and array[nx][ny] == 1 and assigned[nx][ny] == 0:
dfs(nx, ny)
for j in range(n):
for k in range(n):
if array[j][k] == 1 and assigned[j][k] == 0:
eachcnt = 0
dfs(j, k)
count.append(eachcnt)
cnt += 1
count.sort()
print(len(count))
for i in range(len(count)):
print(count[i])
더 생각해 볼 것?
...
코드나 내용 관련 조언, 부족한 점 및 질문 언제든 환영합니다!
반응형
'코딩 > 백준 (Python)' 카테고리의 다른 글
백준 7576번: 토마토 (Python) (0) | 2021.04.11 |
---|---|
백준 2178번: 미로 탐색 (Python) (0) | 2021.04.11 |
백준 1260번: DFS와 BFS (Python) (0) | 2021.04.11 |
백준 7579번: 앱 (Python) (0) | 2021.04.11 |
백준 2293번: 동전 1 (Python) (0) | 2021.04.10 |
최근댓글