접근

DFS 혹은 BFS 알고리즘을 이용하여 한 단지로 묶일 수 있는 집을 탐색하여 단지를 지정해준다.

알고리즘 기본 코드 참고 :

2021.04.11 - [코딩/백준 (Python)] - 백준 1260번: DFS와 BFS (Python)

 

백준 1260번: DFS와 BFS (Python)

접근 DFS는 깊이 우선 탐색, BFS는 너비 위주 탐색이다. DFS는 첫번째 이웃으로 이동하고나서, 해당 이웃을 기준삼아 다시 또 첫번째 이웃으로 이동하고 동일하게 계속 진행하여 더이상 연결이 되

ca.ramel.be

아래 코드에서는 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
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기