๋ฌธ์
https://www.acmicpc.net/problem/2583
2583๋ฒ: ์์ญ ๊ตฌํ๊ธฐ
์ฒซ์งธ ์ค์ M๊ณผ N, ๊ทธ๋ฆฌ๊ณ K๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. M, N, K๋ ๋ชจ๋ 100 ์ดํ์ ์์ฐ์์ด๋ค. ๋์งธ ์ค๋ถํฐ K๊ฐ์ ์ค์๋ ํ ์ค์ ํ๋์ฉ ์ง์ฌ๊ฐํ์ ์ผ์ชฝ ์๋ ๊ผญ์ง์ ์ x, y์ขํ๊ฐ๊ณผ ์ค
www.acmicpc.net
ํ์ด
# ๋ฐฑ์ค 2583๋ฒ ๋ฌธ์ - ์์ญ ๊ตฌํ๊ธฐ
from collections import deque
dx, dy = [0,0,-1,1], [1,-1,0,0]
m, n, k = map(int, input().split())
graph = [[0]*(n) for _ in range(m)]
for _ in range(k):
x, y, x1, y1 = map(int, input().split())
for i in range(y, y1):
for j in range(x, x1):
graph[i][j] = 1
area = 1
res = []
def bfs(a,b):
queue = deque()
queue.append((a,b))
graph[a][b] = 1
area = 1
while queue:
x, y = queue.popleft()
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
# ๋ฒ์ ์์ ์๊ณ ๊ทธ๋ํ๊ฐ 1์ด๊ณ ๋ฐฉ๋ฌธ์ ํ์ง ์์๋ค๋ฉด
if 0<=nx<m and 0<=ny<n and graph[nx][ny] == 0:
graph[nx][ny] = 1
queue.append((nx,ny))
area += 1
return area
for i in range(m):
for j in range(n):
if graph[i][j] == 0:
res.append(bfs(i,j))
print(len(res))
res.sort()
for i in res:
print(i, end=' ')
'๐๏ธ Algorithm > ๐ฉ ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ฉ [๋ฐฑ์ค] [Python] 1946๋ฒ_์ ์ ์ฌ์ (0) | 2022.11.19 |
---|---|
๐ฉ [๋ฐฑ์ค] [Python] [ํ] 16927๋ฒ_๋ฑ๊ณผ ์ฌ๋ค๋ฆฌ ๊ฒ์ (0) | 2022.11.18 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 2644๋ฒ_์ด์๊ณ์ฐ (0) | 2022.11.17 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 5014๋ฒ_์คํํธ๋งํฌ (0) | 2022.11.17 |
๐ฉ [๋ฐฑ์ค] [Python] [BFS/DFS] 7569๋ฒ_ํ ๋งํ (0) | 2022.11.17 |