https://leetcode.com/problems/number-of-islands/submissions/
입력값 : 0과 1로 이루어진 그래프가 주어진다.
["1", "1", "1", "1", "0"],
["1", "1", "0", "1", "0"],
["1", "1", "0", "0", "0"],
["0", "0", "0", "0", "0"]
출력값 : 1의 덩어리를 출력한다. 1로만 연결되어있는 부분.
1
상하좌우 탐색을 위한 리스트와 열의 길이 행의길이 섬의 개수를 지정해주는 변수를 생성한다.
def island_bfs(grid):
dx = [0, 0, -1, 1] # 좌우
dy = [-1, 1, 0, 0] # 상하
rows = len(grid) # 열의 길이
cols = len(grid[0]) # 행의 길이
count = 0 # 섬의 개수
그래프 전체 탐색을 시작한다.
# 전체 탐색 시작
for r in range(rows):
for c in range(cols):
육지가 아닐 경우 건너뛰어준다.
# 육지가 아닐경우 건너뜀
if grid[r][c] != '1':
continue
육지일 경우에는 섬의 개수 카운트해주고 큐에 시작 노드를 넣어준다.
#육지일 경우
count += 1 #섬의 개수 카운트
q = collections.deque([(r, c)]) #큐에 시작 노드 넣기