공부 기록장
[백준 - Python] 2583. 영역 구하기 (DFS/BFS) 본문
https://www.acmicpc.net/problem/2583
코드
import sys
sys.setrecursionlimit(10**6)
m, n, k = map(int, input().split())
graph = [[0 for _ in range(n)] for _ in range(m)]
for _ in range(k):
x, y, xx, yy = map(int, input().split())
for i in range(x, xx):
for j in range(y, yy):
graph[j][i] = 1 # 왜 인덱스를 바꾸는 거지 ?? 아
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
#dfs로 풀어보기
def dfs(x, y):
global cnt
cnt += 1
graph[x][y] = 1 # 1은 방문
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or nx >= m or ny < 0 or ny >= n:
continue
if graph[nx][ny] == 0:
dfs(nx, ny)
result = []
for i in range(m):
for j in range(n):
if graph[i][j] == 0:
cnt = 0
dfs(i, j)
result.append(cnt)
print(len(result))
result.sort()
for r in result:
print(r, end=' ')
dfs로 풀었다.
2차원 배열에서 인덱스가 너무 헷갈린다.
인덱스 안 헷갈리는 팁 있으면 알려주세요.
'코딩 테스트 > 백준 문제 풀이' 카테고리의 다른 글
[백준 - Python] 1926. 그림 (DFS/BFS) (0) | 2024.01.15 |
---|---|
[백준 - Python] 1697. 숨바꼭질 (DFS/BFS) (0) | 2024.01.14 |
[백준 - Python] 2468. 안전 영역 (DFS/BFS) (0) | 2024.01.14 |
[백준 - Python] 2644. 촌수 계산 (DFS/BFS) (0) | 2024.01.14 |
[백준 - Python] 2667. 단지 번호 붙이기 (DFS/BFS) (0) | 2024.01.13 |