2583번: 영역 구하기
첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오
www.acmicpc.net
<내 코드>
from collections import deque
def bfs(x, y):
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
cnt = 1
queue = deque()
queue.append((x, y))
graph[x][y] = 1
while queue:
now = queue.popleft()
for i in range(4):
nx = now[0] + dx[i]
ny = now[1] + dy[i]
if(0 <= nx < M) and (0 <= ny < N):
if graph[nx][ny] == 0:
graph[nx][ny] = 1
queue.append((nx, ny))
cnt += 1
return cnt
M, N, K = map(int, input().split())
graph = [[0]*N for _ in range(M)]
result = []
total = 0
for _ in range(K):
x1, y1, x2, y2 = map(int, input().split())
# (x1, y1) ~ (x2, y2) 사각형 범위 1로
for i in range(y1, y2):
for j in range(x1, x2):
graph[i][j] = 1
for i in range(M):
for j in range(N):
if graph[i][j] == 0:
total += 1
result.append(bfs(i, j))
result.sort()
print(total)
print(*result)
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 7576] 토마토 - Python (그래프, BFS) (0) | 2020.09.01 |
---|---|
[백준 4963] 섬의 개수 - Python (그래프, BFS) (0) | 2020.08.31 |
[백준 1012] 유기농 배추 - Python (그래프, DFS) (0) | 2020.08.31 |
[백준 11724] 연결 요소의 개수 - Python (그래프탐색, DFS) (0) | 2020.08.31 |
[백준 2606] 바이러스 - Python (그래프 탐색, DFS) (0) | 2020.08.30 |