Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- python기초
- 그리디
- python자료형
- Git
- 운체 1주차
- git 오류
- c언어
- c언어 기본
- git기초
- 파이썬 알고리즘 인터뷰
- 인스타
- python기본
- 코테
- 인텔리제이
- 자료구조
- git오류
- #코린이 #코딩 #할 수 있다
- 스택
- 4장
- Workbench
- DP
- c언어 제어문
- 최단거리
- 데베시 1주차
- 참고X
- 5장
- 코딩테스트
- 1주차(1)
- 도커
Archives
- Today
- Total
하루살이 개발자
[알고리즘_그래프] DFS(깊이 우선 탐색) 예제 본문
섬의 개수 문제: https://leetcode.com/problems/number-of-islands/
Solution
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
def dfs(i, j):
# 땅이 아닌 경우 종료
if i < 0 or i >= len(grid) or \
j < 0 or j >= len(grid[0]) or \
grid[i][j] != '1':
return
# 이미 방문한 곳은 #으로 마킹
grid[i][j] = '#'
# 동서남북 탐색
dfs(i + 1, j)
dfs(i - 1, j)
dfs(i, j + 1)
dfs(i, j - 1)
count = 0
for i in range(len(grid)):
for j in range(len(grid[0])):
# 육지인 경우
if grid[i][j] == '1':
# 탐색
dfs(i, j)
# 모든 육지 탐색 후 카운트 1 증가
count += 1
return count
'CS > 알고리즘' 카테고리의 다른 글
[알고리즘] union-find 알고리즘 (0) | 2022.02.20 |
---|---|
[알고리즘] 소수찾기 - 에라토스테네스의 체 (0) | 2022.02.16 |
[알고리즘] 우선순위 큐 (Priority Queue) (0) | 2022.02.16 |
[알고리즘] 최단 경로 알고리즘(1) - 다익스트라(Dijkstra) 알고리즘 (0) | 2022.02.13 |
[알고리즘] 그래프 탐색 01_DFS(깊이 우선 탐색)/BFS(너비 우선 탐색) (0) | 2022.01.23 |