본문 바로가기

파이썬 알고리즘 풀이

70)섬나라 아일랜드(BFS 활용)

문제

섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하기

 

조건

섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다.

 

각 섬은 1로 표시되어 상하좌우와 대 각선으로 연결되어 있으며, 0은 바다입니다.

 

제한사항

첫 번째 줄에 자연수 N(3<=N<=20)이 주어집니다.

 

두 번째 줄부터 격자판 정보가 주어진다.

 

첫 번째 줄에 섬의 개수를 출력한다.

 

문제풀이

from collections import deque

dx=[-1, -1, 0, 1, 1, 1, 0, -1]
dy=[0, 1, 1, 1, 0, -1, -1, -1]
N=int(input())
board=[list(map(int, input().split())) for _ in range(N)]
cnt=0
dQ=deque()

for i in range(N):
  for j in range(N):
    if board[i][j]==1:
      board[i][j]=0
      dQ.append((i, j))
      
      while dQ:
        tmp=dQ.popleft()
        for k in range(8):
          x=tmp[0]+dx[k]
          y=tmp[1]+dy[k]

          if 0<=x<N and 0<=y<N and board[x][y]==1:
            board[x][y]=0
            dQ.append((x, y))
      cnt+=1

print(cnt)

'파이썬 알고리즘 풀이' 카테고리의 다른 글

72)안전영역(DFS)  (0) 2021.11.15
71)사다리 타기(DFS)  (0) 2021.11.12
69)단지 번호 붙이기(DFS, BFS)  (0) 2021.11.09
68)등산경로(DFS)  (0) 2021.11.09
67)미로 탐색(DFS)  (0) 2021.11.09