728x90
반응형
https://www.acmicpc.net/problem/2583
2583번: 영역 구하기
첫째 줄에 M과 N, 그리고 K가 빈칸을 사이에 두고 차례로 주어진다. M, N, K는 모두 100 이하의 자연수이다. 둘째 줄부터 K개의 줄에는 한 줄에 하나씩 직사각형의 왼쪽 아래 꼭짓점의 x, y좌표값과 오
www.acmicpc.net
<풀이>
사각형 그려주고 아닌거마다 위치를 구해준다.
<전체 코드>
from collections import deque
import sys
M, N, K = map(int, sys.stdin.readline().split())
graph = [[0 for _ in range(N)] for _ in range(M)]
for _ in range(K):
x1, y1, x2, y2 = map(int, sys.stdin.readline().split())
for i in range(y1, y2):
for j in range(x1, x2):
graph[i][j] = 1
drow = [-1, 0, 1, 0]
dcol = [0, 1, 0, -1]
rectangle = []
queue = deque()
for row in range(M):
for col in range(N):
if graph[row][col] == 0:
queue.append([row, col])
graph[row][col] = 1
rectangle_size = 1
while queue:
nowRow, nowCol = queue.popleft()
for i in range(4):
nextRow = nowRow+drow[i]
if not 0 <= nextRow < M:
continue
nextCol = nowCol+dcol[i]
if not 0 <= nextCol < N:
continue
if graph[nextRow][nextCol] == 0:
graph[nextRow][nextCol] = 1
rectangle_size += 1
queue.append([nextRow, nextCol])
rectangle.append(rectangle_size)
print(len(rectangle))
rectangle.sort()
for i in rectangle:
print(i, end=' ')
728x90
반응형
'# Coding > # 백준' 카테고리의 다른 글
[백준 / 1074] Z - Python (0) | 2022.04.06 |
---|---|
[백준 / 23743] 방탈출 - Python (0) | 2022.03.25 |
[백준 / 24678] 돌무더기 게임 1 - Python (0) | 2022.03.17 |
[백준 / 16938] 캠프 준비 - Python (0) | 2022.03.11 |
[백준 / 1393] 음하철도 구구팔 - Python (0) | 2022.03.11 |