[백준/파이썬] 4963번

민정·2023년 4월 27일
0

[백준/파이썬]

목록 보기
137/245
post-thumbnail

📍백준 4963번 문제

https://www.acmicpc.net/problem/4963

코드

import sys
from collections import deque
input = sys.stdin.readline


def bfs(a, b):

    dx = [-1, 1, 0, 0, -1, 1, -1, 1]
    dy = [0, 0, -1, 1, -1, 1, 1, -1]
    queue = deque()
    queue.append((a, b))
    graph[a][b] = 0
    while queue:
        x, y = queue.popleft()
        for i in range(8):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < h and 0 <= ny < w and graph[nx][ny] == 1:
                graph[nx][ny] = 0
                queue.append((nx, ny))


while True:
    w, h = map(int, input().split())
    if w == 0 and h == 0:
        break
    graph = [list(map(int, input().split()))for _ in range(h)]
    cnt = 0
    for i in range(h):
        for j in range(w):
            if graph[i][j] == 1:
                cnt += 1
                bfs(i, j)
    print(cnt)

풀이

BFS를 이용하였으며, 대각선으로 연결되어 있는 사각형도 걸어갈 수 있는 사각형이므로 dx, dy에 대각선과 관련된 값을 넣었다. (ex(1,1)(-1,-1)(-1,1)(1,-1))

이중 반복문 범위때문에 꽤나 고생했다..😭

profile
パㅔバ6ㅇr 덤벼ㄹΓ :-0

0개의 댓글