알고리즘 - 음료수 얼려 먹기

Algorithm

Posted by Seongkyun Yu on 2020-12-25
Estimated Reading Time 1 Minutes
Words 131 In Total
Viewed Times

문제


접근 방법

모든 블럭을 체크하여 0인 경우 상하좌우 네 방향으로 재귀 함수를 돌려 1 값으로 만든다.

이렇게 처리한 후 결과 값을 하나씩 올린다.

단 없는 좌표일 경우와 이미 1인 경우 바로 리턴한다.

풀이 코드

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
32
33
34
35
input_data = list(map(int, input().split()))

row = input_data[0]
column = input_data[1]

graph = []
result = 0

for i in range(row):
graph.append(list(map(int, input())))


def dfs(x, y):
if x < 0 or x > row - 1 or y < 0 or y > column - 1:
return False

if graph[x][y] == 1:
return False

graph[x][y] = 1

dfs(x + 1, y)
dfs(x - 1, y)
dfs(x, y + 1)
dfs(x, y - 1)

return True


for i in range(row):
for j in range(column):
if dfs(i, j) == True:
result += 1

print(result)

If you like this blog or find it useful for you, you are welcome to comment on it. You are also welcome to share this blog, so that more people can participate in it. If the images used in the blog infringe your copyright, please contact the author to delete them. Thank you !