본문 바로가기

알고리즘(python)/DFS BFS

백준 1012

https://www.acmicpc.net/problem/1012

 

1012번: 유기농 배추

차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 

www.acmicpc.net

 

import sys
# 1000이상의 재귀가 호출되면 재귀의 깊이를 늘려줘야함
sys.setrecursionlimit(10 ** 4)
input = sys.stdin.readline

t = int(input())
answer_0 = []
# 테스트 케이스 만큼 반복
for i in range(t):
  # dfs 함수 만들기
  def dfs(x,y):
    if x<= -1 or y <= -1 or x>= m or y >= n :
      return False 
    global graph
    if graph[y][x] == 1:
      graph[y][x] = 0 
      dfs(x,y+1)
      dfs(x,y-1)
      dfs(x-1,y)
      dfs(x+1,y)
      return True
    return False
  # m 가로 길이 n 세로 길이
  m,n,k = map(int, input().split())
  graph = []
  # 밭의 넓이 만큼의 그래프 만들기
  for i in range(n):
    graph.append([0]*m)
  #배추가 있는곳 표시하기
  for i in range(k):
    a,b = map(int, input().split())
    graph[b][a] = 1
  answer = 0
  for i in range(m):
    for j in range(n):
      if dfs(i,j) == True:
        answer += 1
  answer_0.append(answer)
for i in answer_0:
  print(i)

 

오늘 배운것 

 

재귀의 반복이 1000번이 넘어가면 재귀의 깊이를 늘려줘야함

 

sys.setrecursionlimit(10 ** 4)

'알고리즘(python) > DFS BFS' 카테고리의 다른 글

백준 2667  (0) 2023.01.13
백준 2606  (0) 2023.01.13