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

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

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#상하좌우
#한번 한거는 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]]으로 받게 된다.

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

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

This post is licensed under CC BY 4.0 by the author.

BOJ 9663번 N-Queen

넷플릭스 "지금 우리 학교는"으로 이해하는 Javascript Promise (+동기, 비동기)