이코테 2021 강의 몰아보기 3. DFS & BFS [음료수 얼려먹기]

자기개발자·2022년 2월 26일
0

(이코테 2021 강의 몰아보기) 3. DFS & BFS

#상하좌우
#한번 한거는 1로 바꾼다
n, m = map(int,input().split())
ice = list()
for _ in range(n):
    ice.append(list(map(int,input())))
# ice = [[input()] for _ in range(n)]
# 위 코드처럼 하면 안됨. 그러면 [[0,0,0]]이 아니라 [[000]]으로 바뀐다.
sum = 0
def dfs(x,y):
    global ice
    global sum
    #범위를 벗어났을때 종료 조건
    if x <= -1 or x >= n or y<=-1 or y >= m :
        return False
    #방문하지 않았다면
    if ice[x][y] == 0:
        ice[x][y] = 1
        dfs(x-1,y)
        dfs(x+1,y)
        dfs(x,y+1)
        dfs(x,y-1)
        return True
    #방문했을 때
    return False

for i in range(n):
    for j in range(m):
        if dfs(i,j):
            sum+=1
print(sum)

느낀 점:

처음에 input값을 다음과 같이 받으려고 했는데 그러면 [[0,0,0]]이 아니라 [[000]]으로 받게 된다.

‘ice = [[input()] for _ in range(n)]

그리고 무의식적으로 input()이 아니라 int(input())으로 받는 경향이 있는데, 대부분의 경우 int를 사용하기는 하지만 string을 다룰때도 있어서 조심해야 할 것 같다.

profile
Self Refiner

0개의 댓글