본문 바로가기
백준 풀이

[백준/BOJ] - 1743번 python 풀이 - DFS

by 반오십 코린이 2023. 2. 28.
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