알고리즘
BFS를 통해 그래프를 탐색하면서 시작지점의 개수와 bfs를 통해 방문한 개수를 각각 저장하여 출력한다.
소스코드
# 그림
import sys
n, m = map(int, sys.stdin.readline().split())
arr = [list(map(int, sys.stdin.readline().split())) for _ in range(n)]
cnt = 0
result = 0
visited = [[0 for i in range(m)] for j in range(n)]
q = []
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
for i in range(n):
for j in range(m):
if visited[i][j] or arr[i][j] == 0:
continue
cnt += 1
visited[i][j] = 1
q.append([i,j])
mx = 0
while q:
mx += 1
cx, cy = q.pop()
for k in range(4):
nx, ny = cx+dx[k], cy+dy[k]
if not (0<=nx<n and 0<=ny<m):
continue
if visited[nx][ny] or arr[nx][ny] == 0:
continue
visited[nx][ny] = 1
q.append([nx, ny])
result = max(mx, result)
print(cnt, result)
'백준 문제 풀이' 카테고리의 다른 글
[백준] 1202 "보석 도둑" -python (0) | 2024.01.10 |
---|---|
[백준] 1744 "수 묶기" -python (0) | 2024.01.05 |
[백준] 7490 "0 만들기" -python (2) | 2024.01.05 |
[백준] 10997 "별찍기 - 22" 재귀 -python (1) | 2024.01.03 |
[백준] 1182 "부분수열의 합" 백트래킹 -python (2) | 2024.01.02 |