Showing

[DFS, python] 연속된 1의 개수 세기 본문

컴퓨터 공학, 전산학/알고리즘

[DFS, python] 연속된 1의 개수 세기

RabbitCode 2023. 12. 21. 20:35

DFS 코드

# N*N크기의 배열이 주어졌을때 1의 개수는 몇개인지 세어보기 dfs를 이용해서
# 하나의 시작 1로 부터 붙어져 있는 연속된 1의 개수 세어보기 => 2, 13이 답이 됨.
# 7
# 0000011
# 0000000
# 0011100
# 0010111
# 0110010
# 0011100
# 0000000
cnt = 0
# 상하좌우
dx = [0,0,-1,1] # 열
dy = [-1,1,0,0] # 행
def dfs(_y, _x):
    global arr, cnt
    arr[_y][_x] = 0
    c_y = _y
    c_x = _x
    for k in range(4):
       n_y = c_y +dy[k]
       n_x = c_x + dx[k]
       if 0 <= n_y and 0 <= n_x and n > n_y and n > n_x and arr[n_y][n_x] == 1:
           arr[c_y][c_x] = 0
           cnt += 1
           dfs(n_y, n_x)

n = int(input())
arr =[]

for _ in range(n):
    arr.append(list(map(int,input())))

for y in range(len(arr)):
    for x in range(len(arr[y])):
        if arr[y][x] == 1:
            cnt = 1
            dfs(y, x)
            print(cnt)