11. DFS/BFS : 음료수 얼려 먹기
2021. 11. 16. 16:16ㆍ파이썬/알고리즘
input:
n m (n * m 얼음판)
00110
00011
11111
00000 (0은 비어있는 것)
rule:
0은 상하좌우로 붙어 있으며 1은 칸막이. 위의 예시는 총 3 개의 음료수가 얼려진다.
위처럼 입력 받았을 때 생성되는 음료수 얼음의 개수를 찾으시오.
dfs 알고리즘을 활용한다. 추후 bfs로도 풀 수 있는 지 확인 필요.
graph = []
n,m = map(int,input().split())
for i in range(n):
graph.append(list(map(int,input())))
def dfs(x,y):
if x <= -1 or x >=n or y <= -1 or y >= m:
return False
if graph[x][y] == 0:
graph[x][y] = 1
dfs(x-1,y)
dfs(x,y-1)
dfs(x+1,y)
dfs(x,y+1)
return True
return False
count = 0
for i in range(n):
for j in range(m):
if dfs(i,j) :
count += 1
print(count)
상하좌우로 탐색하는 것이 핵심! 그리고 개별로 접근할 때의 방식을 잘 기억해두자.
반응형
'파이썬 > 알고리즘' 카테고리의 다른 글
| 13. 정렬 알고리즘 : 문제 풀이 전략 (0) | 2021.11.16 |
|---|---|
| 12. DFS/BFS : 미로 탈출 (0) | 2021.11.16 |
| 10. DFS/BFS : 문제 풀이 전략 (0) | 2021.11.16 |
| 9. 구현 : 게임 개발 (0) | 2021.11.15 |
| 8. 구현 : 체스 나이트의 경우의 수 (0) | 2021.11.14 |