728x90
반응형
문제
https://www.acmicpc.net/problem/2667
문제 해결방법
bfs 로 해결 가능
graph[i][j] 가 1인 곳에서 검색을 시작해서
인접한 부분을 찾고 종료시 count return
문제 풀이
import sys
from collections import deque
N = int(sys.stdin.readline().strip())
boards = []
for _ in range(N):
boards.append(list(map(int, sys.stdin.readline().strip())))
dx = [0, 0, 1, -1]
dy = [1, -1, 0, 0]
def bfs(x, y):
queue = deque()
queue.append((x, y))
boards[x][y] = 0
count = 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= N or ny < 0 or ny >= N:
continue
if boards[nx][ny] == 1:
boards[nx][ny] = 0
queue.append((nx, ny))
count += 1
return count
result = []
for i in range(N):
for j in range(N):
if boards[i][j] == 1:
result.append(bfs(i, j))
result.sort()
print(len(result))
for r in result:
print(r)
728x90
반응형
'IT > 알고리즘' 카테고리의 다른 글
[Python] 백준 7576 - 토마토 (0) | 2021.11.06 |
---|---|
[Python] 백준 1012 - 유기농 배추 (0) | 2021.11.06 |
프로그래머스 - 가장 큰 정사각형 찾기 (0) | 2021.01.23 |
프로그래머스 - 나머지 한 점 (0) | 2021.01.22 |
프로그래머스 - 순열 검사 (0) | 2021.01.22 |