[백준/파이썬] 1926번

민정·2024년 1월 7일
0

[백준/파이썬]

목록 보기
217/245
post-thumbnail

📍백준 1926번 문제

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

코드

import sys
from collections import deque

n, m = map(int, input().split())

dx = [0, 0, 1, -1]
dy = [-1, 1, 0, 0]


def bfs(i, j):
    cnt = 1
    que = deque()
    que.append((i, j))
    visited[i][j] = True
    while que:
        x, y = que.popleft()
        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]
            if 0 <= nx < n and 0 <= ny < m and visited[nx][ny] == False:
                if paper[nx][ny] == 1:
                    visited[nx][ny] = True
                    cnt += 1
                    que.append((nx, ny))
    return cnt


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

for _ in range(n):
    paper.append(list(map(int, input().split())))

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

if res:
    print(len(res))
    print(max(res))
else:
    print(0)
    print(0)

풀이

BFS를 이용해서 풀면 된다.
BFS에서 방문한 값들을 return 값으로 받아, res에 더해준다.

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

0개의 댓글