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 | 31 |
Tags
- 파이썬 #알고리즘 #데크 #원형큐 #코딩테스트
- cyclegan #GAN
- char-CNN #자연어처리 # 단어임베딩 #wordembedding #LSTM
- 파이썬 #알고리즘 #코딩인터뷰 #리트코드 #DFS
- BERT #자연어처리
- 자연어처리 #기계번역 #attention #global attention # local attention
- 딥러닝 #모멘텀 #momentum #핸즈온머신러닝 #하이퍼파라미터튜닝
- 자연어처리 #question-answering #dynamic memory #attention
- PCA #주성분 분석 #머신러닝 #선형대수 #sklearn
- 자연어처리 #glove #글로브 #glove vector #벡터 임베딩
- 배치 정규화 #batch normalization # 딥러닝 #머신러닝
- 딥러닝 #머신러닝 #AdaGrad
- 특이값분해 # SVD #머신러닝 #차원축소 # 인공지능
- 3d cad #인공지능 #resnet
Archives
- Today
- Total
누누와데이터
파이썬 알고리즘 인터뷰 32번 문제 : 섬의 개수 본문
-문제 : 1을 육지로 0을 물로 가정한 2D 그리드 맵이 주어졌을 때, 섬의 개수를 계산하라. (연결되어 있는 1의 덩어리 개수를 구하라)
-풀이 : 깊이우선탐색(DFS)을 사용하였다.
->입력1
11110
11010
11000
00000
->출력1
1
->입력2
11000
11000
00100
00011
->출력2
3
class Solution(object):
def dfs(self ,grid, 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] = '0'
self.dfs(grid, i+1, j)
self.dfs(grid, i + 1, j)
self.dfs(grid, i + 1, j)
self.dfs(grid, i + 1, j)
def numIslands(self, grid):
"""
:type grid: List[List[str]]
:rtype: int
"""
# 예외처리
if not grid :
return 0
#육지개수 세는 카운트
count = 0
for i in range(len(grid)) :
for j in range(len(grid[0])) :
#섬일 경우
if grid[i][j] == '1' :
#섬 주변 상하좌우 탐색
self.dfs(grid, i, j)
# 모든 육지 탐색 후 카운트 1 증가
count += 1
return count
"""
Runtime: 168 ms, faster than 19.83% of Python online submissions for Number of Islands.
Memory Usage: 21.4 MB, less than 58.62% of Python online submissions for Number of Islands.
"""
출처 : 파이썬 알고리즘 인터뷰 (95가지 알고리즘 문제풀이로 완성하는 코딩테스트, 박상길 지음)
'자료구조, 알고리즘' 카테고리의 다른 글
파이썬 알고리즘 인터뷰 26번 문제 : 원형데크디자인 (0) | 2021.02.03 |
---|
Comments