관리 메뉴

어읽로꾸거

BOJ 1926 그림 본문

알고리즘

BOJ 1926 그림

어읽로꾸거 2019. 4. 17. 17:49

백준 1926 링크

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

 

1926번: 그림

어떤 큰 도화지에 그림이 그려져 있을 때, 그 그림의 개수와, 그 그림 중 넓이가 가장 넓은 것의 넓이를 출력하여라. 단, 그림이라는 것은 1로 연결된 것을 한 그림이라고 정의하자. 가로나 세로로 연결된 것은 연결이 된 것이고 대각선으로 연결이 된 것은 떨어진 그림이다. 그림의 넓이란 그림에 포함된 1의 개수이다.

www.acmicpc.net

풀이

🙄

코드

from collections import deque
input=__import__('sys').stdin.readline
n,m = map(int, input().split())
mp = [list(map(int, input().split())) for _ in range(n)]
cnt=0
mx=0
ly,lx=[0,0,1,-1],[1,-1,0,0]
for i in range(n):
    for j in range(m):
        if mp[i][j]==1:
            temp=0
            cnt=cnt+1
            q=deque([(i,j)])
            mp[i][j]=0
            while q:
                y,x=q.popleft()
                temp+=1
                for j in range(4):
                    ny=y+ly[j];nx=x+lx[j]
                    if 0<=ny<n and 0<=nx<m and mp[ny][nx]==1:
                        q.append((ny,nx))
                        mp[ny][nx]=0
            mx=max(mx,temp)
print(cnt)
print(mx)

'알고리즘' 카테고리의 다른 글

BOJ 6118 숨바꼭질  (0) 2019.04.19
BOJ 6087 레이저 통신  (0) 2019.04.18
BOJ 2206 벽 부수고 이동하기  (0) 2019.04.16
BOJ 1854 K번째 최단경로 찾기  (0) 2019.04.11
BOJ 1743 음식물 피하기  (0) 2019.04.11