728x90
1. 배열의 크기를 입력받고 해당하는 값들을 모두 0으로 초기화 한다.
2. 다음 쓰레기를 1로 설정해놓는다.
3. 2중 for문을 돌리며 탐색을 시작한다.
4. 쓰레기를 방문했을 경우 0으로 변경하여 다시 되돌아가는 경우가 없도록 한다.
5. 주어진 쓰레기 좌표는 0 좌표가 없다고 생각하고 진행하기 때문에 리스트로 표현하는 특성상 해당 좌표에서
x,y 좌표를 각각 -1씩 연산하여 쓰레기 좌표를 정정해준다.
import sys
input= sys.stdin.readline
sys.setrecursionlimit(1000000)
storage = []
cnt = 0
dx,dy = (-1,1,0,0),(0,0,-1,1)
def dfs(x,y):
global cnt
cnt += 1
arr[x][y] = 0
for i in range(4):
rx = x + dx[i]
ry = y + dy[i]
if (0<=rx<m) and (0<=ry<n):
if arr[rx][ry] == 1: #스레기일 경우
dfs(rx,ry)
m,n,k = map(int,input().split())
arr = [[0 for _ in range(n)] for _ in range(m)]
for i in range(k):
a,b = map(int,input().split())
arr[a-1][b-1] = 1 #쓰레기
for i in range(m): #3 -> 0~2
for j in range(n): #4 -> 0~3
if arr[i][j] == 1:
dfs(i,j)
storage.append(cnt)
cnt = 0
print(max(storage))
728x90
'백준 풀이' 카테고리의 다른 글
[백준/BOJ] - 2668번 python 풀이 - DFS (0) | 2023.03.05 |
---|---|
[백준/BOJ] - 1245번 python 풀이 - DFS (0) | 2023.03.01 |
[백준/BOJ] - 11725번 python 풀이 - DFS (0) | 2023.02.27 |
[백준/BOJ] - 2210번 python 풀이 - DFS (0) | 2023.02.27 |
[백준/BOJ] - 15810번 python 풀이 - 이분탐색 (0) | 2023.02.01 |