코드
import sys
sys.setrecursionlimit(10**6)
m,n,k = map(int, input().split())
paper = [[0] * n for _ in range(m)]
for _ in range(k):
x1, y1, x2, y2 = map(int, input().split())
for i in range(y1, y2):
for j in range(x1, x2):
paper[i][j] = 1
count = 0
def dfs(x,y, graph):
global count
if (0 <=x <m and 0 <=y <n) and graph[x][y] == 0:
graph[x][y] = 5
count += 1
dfs(x+1, y, graph)
dfs(x-1, y, graph)
dfs(x, y+1, graph)
dfs(x, y-1, graph)
return count
area = []
for i in range(m):
for j in range(n):
cnt = dfs(i, j, paper)
if cnt:
area.append(cnt)
count = 0
area.sort()
print(len(area))
print(*area)
'백준' 카테고리의 다른 글
[백준] 1024번 수열의 합 파이썬 코드 (0) | 2023.10.19 |
---|---|
[백준] 11663번 선분 위의 점 파이썬 코드 (1) | 2023.10.16 |
[백준] 19637번 IF문 좀 대신 써줘 파이썬 코드 (0) | 2023.10.09 |
[백준] 26069번 붙임성 좋은 총총이 파이썬 코드 (0) | 2023.10.09 |
[백준] 10798번 세로읽기 파이썬 코드 (0) | 2023.10.08 |
코드
import sys
sys.setrecursionlimit(10**6)
m,n,k = map(int, input().split())
paper = [[0] * n for _ in range(m)]
for _ in range(k):
x1, y1, x2, y2 = map(int, input().split())
for i in range(y1, y2):
for j in range(x1, x2):
paper[i][j] = 1
count = 0
def dfs(x,y, graph):
global count
if (0 <=x <m and 0 <=y <n) and graph[x][y] == 0:
graph[x][y] = 5
count += 1
dfs(x+1, y, graph)
dfs(x-1, y, graph)
dfs(x, y+1, graph)
dfs(x, y-1, graph)
return count
area = []
for i in range(m):
for j in range(n):
cnt = dfs(i, j, paper)
if cnt:
area.append(cnt)
count = 0
area.sort()
print(len(area))
print(*area)
'백준' 카테고리의 다른 글
[백준] 1024번 수열의 합 파이썬 코드 (0) | 2023.10.19 |
---|---|
[백준] 11663번 선분 위의 점 파이썬 코드 (1) | 2023.10.16 |
[백준] 19637번 IF문 좀 대신 써줘 파이썬 코드 (0) | 2023.10.09 |
[백준] 26069번 붙임성 좋은 총총이 파이썬 코드 (0) | 2023.10.09 |
[백준] 10798번 세로읽기 파이썬 코드 (0) | 2023.10.08 |