for _ in range(k):
a,b,c,d = map(int,input().split())
# 좌표를 밑으로 뒤집는다고 생각하면
# (a,b) 는 (b,a)인 셈임
# (b,a) (b,c)
# (d,a) (d,c)
for i in range(b,d):
for j in range(a, c):
arr[i][j] = -1
전체 코드
import sys
input = sys.stdin.readline
from collections import deque
m,n,k = map(int, input().split())
arr = [[0 for _ in range(n)] for _ in range(m)]
for _ in range(k):
a,b,c,d = map(int,input().split())
for i in range(b,d):
for j in range(a, c):
arr[i][j] = -1 #상하반전으로 저장. 직사각형 둔 곳이 -1
di = [0,1,0,-1]
dj = [1,0,-1,0]
areacnt = []
cnt = 1
for i in range(m):
for j in range(n):
if arr[i][j] == 0:
queue = deque([(i,j)])
arr[i][j] = cnt
cnt+=1
while queue:
qi, qj = queue.popleft()
for d in range(4):
nexti , nextj = qi+di[d] , qj+dj[d]
if 0<=nexti<m and 0<=nextj<n:
if arr[nexti][nextj] == 0:
queue.append((nexti, nextj))
arr[nexti][nextj] = cnt
cnt+=1
areacnt.append(cnt-1)
cnt = 1
print(len(areacnt))
print(' '.join(map(str,sorted(areacnt))))
N X M 의 2차원 행렬이라면
arr = [[0 for _ in range(M)] for _ in range(N)]