2667번 문제이다.
사진을 누르면 문제로 이동한다.
문제는 Python언어로 구현하였다.
2차원 리스트 형태의 그래프 탐색이다. 탐색할 방향을 좌표의 형태로 리스트에 담아놓은 후, for 문을 통해서 4방향 탐색을 진행하면 된다. 그 다음으로는 조건문을 통해 다음에 방문할 노드가 범위를 초과하는지 체크한 후, 방분 여부를 결정하면 된다.
import sys
input = sys.stdin.readline
N = int(input())
graph = [list(input().rstrip()) for i in range(N)]
visited = [[0] * N for i in range(N)]
houses = []
house = 0
def search(i, j):
global house
if i < 0 or j >= N or i >= N or j < 0 or graph[i][j] == '0':
return
graph[i][j] = '0'
visited[i][j] = 1
house += 1
# 4방향 탐색
search(i + 1, j)
search(i, j + 1)
search(i - 1, j)
search(i, j - 1)
for i in range(N):
for j in range(N):
if visited[i][j] == 0 and graph[i][j] == '1':
search(i,j)
houses.append(house)
house = 0
print(len(houses))
for i in sorted(houses):
print(i)
'Algorithm' 카테고리의 다른 글
[BAEKJOON] 1450번: 냅색문제 (0) | 2021.11.16 |
---|---|
[BAEKJOON] 10451번: 순열 사이클 (0) | 2021.11.08 |
[BAEKJOON] 13977번: 이항 계수와 쿼리 (0) | 2021.11.03 |
[BAEKJOON] 11401번: 이항 계수 3 (0) | 2021.11.03 |
[BAEKJOON] 2178번: 미로탐색 (0) | 2021.10.26 |