관리 메뉴

즐겁게, 코드

BOJ 1926번 - 그림 본문

💯 알고리즘/백준 온라인 저지

BOJ 1926번 - 그림

Chamming2 2021. 4. 12. 21:18

[백준 온라인 저지 링크]

 

1926번: 그림

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

www.acmicpc.net

BOJ 2667번: 단지번호붙이기 와 유사한 문제다.

입력받을 때만 조심하면 크게 꼬인 트릭은 없는 문제!

 

[정답 코드 - Python]

from collections import deque

N, M = map(int, input().split())
picture = []
visited = [[False] * M for _ in range(N)]

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

for _ in range(N):
    picture.append(list(map(int, input().split())))


def BFS(start_node):
    cnt = 0
    q = deque()
    y, x = start_node
    q.append((y, x))
    visited[y][x] = True

    while q:
        y, x = q.pop()
        cnt += 1
        for i in range(4):
            ny = y + dy[i]
            nx = x + dx[i]
            # 이렇게 다음 지점의 인덱스 조건을 미리 거는게 편한듯 
            if 0 <= ny < N and 0 <= nx < M:
                if visited[ny][nx] == False and picture[ny][nx] == 1:
                    visited[ny][nx] = True
                    q.append((ny, nx))

    return cnt


for row in range(N):
    for col in range(M):
        if picture[row][col] == 1 and visited[row][col] == False:
            cnt = BFS((row, col))
            picture_cnt += 1
            if cnt > max_picture:
                max_picture = cnt

print(picture_cnt)
print(max_picture)

 

반응형

'💯 알고리즘 > 백준 온라인 저지' 카테고리의 다른 글

BOJ 1935번 - 후위 표기식 2  (0) 2021.04.14
BOJ 2468번 - 안전 영역  (0) 2021.04.12
BOJ 17206번 - 준석이의 수학 숙제  (0) 2021.04.12
BOJ 9047번 - 6174  (0) 2021.04.10
BOJ 2178번 - 미로 탐색  (0) 2021.04.02
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆