1012번: 유기농 배추
차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 �
www.acmicpc.net
<내 코드>
import sys
sys.setrecursionlimit(10000)
def dfs(x, y):
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
# 상,하,좌,우 확인
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if (0 <= nx < N) and (0 <= ny < M):
if matrix[nx][ny] == 1:
matrix[nx][ny] = -1
dfs(nx, ny)
T = int(input())
for _ in range(T):
M, N, K = map(int, input().split())
matrix = [[0]*M for _ in range(N)]
cnt = 0
# 행렬 생성
for _ in range(K):
m, n = map(int, input().split())
matrix[n][m] = 1
for i in range(N): # 행 (바깥 리스트)
for j in range(M): # 열 (내부 리스트)
if matrix[i][j] > 0:
dfs(i, j)
cnt += 1
print(cnt)
런타임 에러를 방지하기 위해 sys.setrecursionlimit(10000)를 사용했다.
1. 현재 위치에서 상하좌우 확인한다.
2. 행렬 범위를 넘지 않고 조건을 만족한다면 지나온 값을 -1로 바꾸고 계속 연결된 지점을 탐색해 나간다.
3. 탐색을 마치면 카운트 값을 1 올려주고, 다른 요소들을 탐색한다.
4. 모든 연결된 부분들을 탐색을 마치면, 부분들이 몇 개인지 출력한다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 4963] 섬의 개수 - Python (그래프, BFS) (0) | 2020.08.31 |
---|---|
[백준 2583] 영역 구하기 - Python (그래프, BFS) (0) | 2020.08.31 |
[백준 11724] 연결 요소의 개수 - Python (그래프탐색, DFS) (0) | 2020.08.31 |
[백준 2606] 바이러스 - Python (그래프 탐색, DFS) (0) | 2020.08.30 |
[백준 2178] 미로 탐색 - Python(BFS, 그래프 탐색) (0) | 2020.08.30 |