음료수 얼려먹기

책 '이것이 취업을 위한 코딩테스트다'에 있는 문제입니다.

00000111100000로 입력받는거를 list형으로 저장하려면, list(map(int,input()))이런식으로 받아야한다. DFS,BFS 둘중 뭘로 풀어야 좋은지 아직 모르겠다.

m,n = map(int,input().split())
graph = [[0 for _ in range(m)] for _ in range(n)]
for i in range(n):
    graph[i] = list(map(int,input()))

def dfs(x,y):
    if x<=-1 or x>=n or y<= -1 or y>=m:
        return False
        if graph[y][x]==0:
            graph[y][x]=2

            dfs(x-1,y)
            dfs(x+1,y)
            dfs(x,y-1)
            dfs(x,y+1)
            return True
        return False

result = 0
for i in range(n):
    for j in range(m):
        if dfs(i, j) == True:
            result +=1

print(result)

좋은 웹페이지 즐겨찾기