[백준] 섬의 개수

yewon Lee·2023년 11월 23일
0


😎BACKJOON>4963번: 섬의 개수

📘 문제풀이

import sys
from collections import deque
while 1:
    n, m = map(int, sys.stdin.readline().split())
    if n == 0 and m == 0:
        break
    islands = [0] * m
    for i in range(m):
        islands[i] = list(map(int, sys.stdin.readline().split()))

    visited = [[False] * n for _ in range(m)]

    d = [(0, 1), (0, -1), (1, 0), (-1, 0), (1, 1), (-1, -1), (1, -1), (-1, 1)]

    q = deque()
    answer = 0

    for i in range(m):
        for j in range(n):
            if visited[i][j] == False and islands[i][j] == 1:
                q.append((i, j))

                while q:
                    px, py = q.popleft()

                    for k in range(8):
                        nx = px + d[k][0]
                        ny = py + d[k][1]

                        if nx < 0 or nx >= m or ny < 0 or ny >= n:
                            continue
                        if visited[nx][ny] == False and islands[nx][ny] == 1:
                            visited[nx][ny] = True
                            q.append((nx, ny))

                answer += 1

    print(answer)
profile
시작

0개의 댓글