문제
https://www.acmicpc.net/problem/1926
코드
def flood_fill():
global val
check[i][j]=val
q.append((i,j))
while q:
x,y=q.popleft()
for k in range(4):
nx,ny=x+dx[k],y+dy[k]
if 0 <=nx <n and 0 <= ny <m:
if arr[nx][ny] and not check[nx][ny]:
check[nx][ny]=val
q.append((nx,ny))
from collections import deque
dx,dy=[-1,1,0,0],[0,0,-1,1]
n,m=map(int,input().split())
arr=[]
for _ in range(n):
arr.append(list(map(int,input().split())))
check=[[0]*m for _ in range(n)]
val=1
q=deque()
for i in range(n):
for j in range(m):
if arr[i][j] == 1 and check[i][j] == 0:
flood_fill()
val+=1
print(val-1)
line=[0 for _ in range(val)]
for i in range(n):
for j in range(m):
if check[i][j] !=0:
line[check[i][j]] += 1
if len(line)!=0:
print(max(line))
else:
print(0)
풀이
가로나 세로로 연결된 그림의 넓이를 찾기 위해 flood_fill()함수를 설정하여 val로 개수를 세고 list에 val만큼의 공간을 만들어서 세어진 val의 개수를 list 안에 넣어 그림의 넓이의 최댓값을 찾아 출력한다.
'Koala - 7기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] 17249 파이썬 (0) | 2022.08.30 |
---|---|
[백준/python] 13565번 침투 (0) | 2022.08.29 |
[백준/python] 1110번 더하기 사이클 (0) | 2022.08.28 |
[백준/C++] 9663 N-Queen (0) | 2022.08.27 |
[백준/Python] 11383번 뚊 (0) | 2022.08.22 |