📌 포인트
DFS로 풀었다!!
방금 푼 단지번호 붙이기 문제와 비슷한 것 같다.
백준 단지번호 붙이기 문제 보러가기
내 풀이 보러가기
😅 위기
잘 풀었다고 생각했는데 '런타임 에러 (RecursionError)'가 나왔다.
DFS로 풀었는데 다음에는 BFS로 생각해봐야지~
백준 안내에 있는 대로
import sys
sys.setrecursionlimit(10**6)
를 추가해서 파이썬 최대 재귀 깊이를 크게 설정하니 성공했다.
👩💻 코드와 설명
import sys
sys.setrecursionlimit(10**6) # 최대 재귀 깊이 설정
dx=[-1,0,1,0]
dy=[0,1,0,-1]
def DFS(x,y):
for p in range(4): #상하좌우 배추가 있는지 체크
xx = x + dx[p]
yy = y + dy[p]
if 0 <= xx < n and 0 <= yy < m and board[xx][yy] == 1: #범위를 만족하고, 배추가 있으면
board[xx][yy] = 0 #그 부분 다시 가지 않도록 0으로 바꾸기
DFS(xx, yy)
if __name__=='__main__':
t=int(input())
for _ in range(t):
m,n,k=map(int,input().split())
board=[[0]*m for _ in range(n)] #밭 전체를 0으로
#배추가 있는 위치를 가져와서, 1로 체크하기
for _ in range(k):
x,y=map(int,input().split())
board[y][x]=1
'''for x in board:
print(x)'''
cnt=0
for i in range(n):
for j in range(m):
if board[i][j] == 1: #쭉~~ 살펴보다가 배추가 있으면
cnt+=1 #배추 수 더해주기
board[i][j] = 0 #그 부분 다시 가지 않도록 0으로 바꾸기
DFS(i, j)
print(cnt)
728x90
'즐거운 PS 👩💻🥰' 카테고리의 다른 글
[백준-파이썬] 16505번: 별 (0) | 2021.10.08 |
---|---|
[백준-파이썬] 2667번: 단지번호 붙이기 (0) | 2021.10.08 |
[백준-파이썬] 2468: 안전 영역 (0) | 2021.10.08 |
[백준-파이썬] 19685번: Palindromic FizzBuzz (0) | 2021.10.08 |
[백준-파이썬] 4963: 섬의 개수 (0) | 2021.10.08 |