반응형
영어 공부하느라 포스팅이 늦어졌다..ㅎ
음 여기서 주의해야 할 점은 cnt 초기화를 0값이 아닌 1로 해줘야 한다는 점??
기억하자 나의 머리야!!
좀 오래걸렸지만 풀고보니 많이 어렵진 않았다.
from collections import deque
dx = [-1,1,0,0]
dy = [0,0,-1,1]
q = deque()
def bfs(i,j):
q.append([i,j])
matrix[i][j] = 1
cnt = 1
while q:
x,y = q.popleft()
for i in range(4):
nx = x+dx[i]
ny = y+dy[i]
if (0 <= nx < m) and (0 <= ny <n):
if matrix[nx][ny] == 0:
matrix[nx][ny] = 1
q.append([nx,ny])
cnt += 1
return cnt
m,n,k = map(int,input().split())
matrix = [[0]*n for _ in range(m)]
for _ in range(k):
x,y,a,b = map(int,input().split())
for i in range(y,b):
for j in range(x,a):
matrix[i][j] = 1
block_list = []
for i in range(m):
for j in range(n):
if matrix[i][j] == 0:
block = bfs(i,j)
if block:
block_list.append(block)
print(len(block_list))
block_list.sort()
for i in range(len(block_list)):
print(block_list[i],end=' ')
반응형
'알고리즘 > dfs,bfs' 카테고리의 다른 글
[파이썬🐍] 백준 2644 : 촌수계산 (0) | 2021.04.11 |
---|---|
[파이썬🐍] 백준 10026 : 적록색약 (0) | 2021.04.10 |
[파이썬🐍] 백준 11724 : 연결 요소의 개수 (0) | 2021.04.08 |
[파이썬🐍] 백준 2606 : 바이러스 (0) | 2021.04.08 |
[파이썬🐍] 백준 2667 : 단지 번호 붙이기 (0) | 2021.04.07 |
댓글