728x90
<문제 링크>
https://leetcode.com/problems/number-of-islands/
<문제 풀이>
1. 상하좌우로 1이 연결되어 있으면 하나의 섬이라고 본다.
2. DFS 알고리즘으로 해결한다.
<코드>
class Solution:
def numIslands(self, grid: List[List[str]]) -> int:
answer = 0
q = []
dx = [0,0,-1,1]
dy = [-1,1,0,0]
for i in range(len(grid)):
for j in range(len(grid[i])):
if grid[i][j]=="1":
q.append((i,j))
answer += 1
grid[i][j] = "2"
while q:
x,y = q.pop()
for d in range(4):
nx = dx[d]+x
ny = dy[d]+y
if nx>=0 and nx<len(grid) and ny>=0 and ny<len(grid[i]):
if grid[nx][ny]=="1":
q.append((nx,ny))
grid[nx][ny] = "2"
return answer
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[정렬] 프로그래머스 L1 '정수 내림차순으로 배치하기' (Python) (0) | 2022.03.19 |
---|---|
[기타] 프로그래머스 L1 '최소공약수와 최소공배수' (Python) (0) | 2022.03.19 |
[해시] 릿코드 438 Medium 'Find All Anagrams in a String' (Python) (0) | 2022.02.07 |
[비트연산] 릿코드 231 Easy 'Power of Two' (Python) (0) | 2022.02.05 |
[이분탐색] 릿코드 153 Medium 'Find Minimum in Rotated Sorted Array' (Python) (0) | 2022.02.04 |