(이코테 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을 다룰때도 있어서 조심해야 할 것 같다.