아이스크림 둘레

면접 대비

시간 제한2초메모리 제한512 MB

요약
격자에서 '#' 칸으로 이루어진 연결 요소 중 넓이가 가장 큰 덩어리를 찾고, 넓이가 같으면 둘레가 가장 작은 것을 고른다. 둘레는 구멍과 맞닿은 변도 포함한다.
난이도

보통10점 중 5점

유형
그래프, DFS, BFS, 구현
정답자
아직 제출이 없습니다

문제

농부 존이 아이스크림 사업을 시작했다! 그는 아이스크림 덩어리를 만들어 내는 기계를 만들었는데, 아쉽게도 모양이 다소 불규칙하다. 그는 기계를 최적화해서 출력되는 모양이 더 나아지도록 하고 싶다.

기계가 출력하는 아이스크림의 배치는 N×NN \times N 격자(1≤N≤10001 \leq N \leq 1000)로 나타낼 수 있다:

##....
....#.
.#..#.
.#####
...###
....##

각 '.' 문자는 빈 공간을, 각 '#' 문자는 1×11 \times 1 크기의 아이스크림 칸을 나타낸다.

아쉽게도 기계는 현재 제대로 작동하지 않아서 서로 분리된 여러 아이스크림 덩어리를 만들 수 있다(위 그림에는 두 개가 있다). 어떤 덩어리에서 아이스크림 칸 하나에서 다른 아이스크림 칸으로 북, 남, 동, 서 방향으로 인접한 아이스크림 칸으로 계속 이동해서 도달할 수 있으면 그 덩어리는 연결되어 있다고 한다.

농부 존은 가장 넓은 아이스크림 덩어리의 넓이와 둘레를 구하려고 한다. 덩어리의 넓이는 그 덩어리에 속한 '#' 문자의 개수이다. 가장 넓은 덩어리가 여러 개면 그중 둘레가 가장 작은 것을 알고 싶어 한다. 위 그림에서 작은 덩어리는 넓이 2, 둘레 6이고 큰 덩어리는 넓이 13, 둘레 22이다.

어떤 덩어리는 가운데에 "구멍"(아이스크림에 둘러싸인 빈 공간)이 있을 수 있다. 그렇다면 구멍과의 경계도 그 덩어리의 둘레에 포함된다. 덩어리가 다른 덩어리 안에 중첩되어 나타날 수도 있는데, 이 경우 둘레는 별개의 덩어리로 취급한다. 예를 들어 다음은 넓이 16인 덩어리 안에 넓이 1인 덩어리가 중첩된 경우이다:

#####
#...#
#.#.#
#...#
#####

아이스크림 덩어리의 넓이와 둘레를 모두 아는 것은 중요하다. 농부 존은 궁극적으로 둘레와 넓이의 비율을 최소화하려 하는데, 그는 이 값을 아이스크림의 아이스페리메트릭 측도라고 부른다. 이 비율이 작으면 아이스크림이 질량에 비해 표면적이 작아서 더 천천히 녹는다.

입력

입력의 첫 줄에는 NN이 들어 있고, 다음 NN개의 줄에는 기계의 출력이 주어진다. 적어도 하나의 '#' 문자가 있다.

출력

가장 큰 덩어리의 넓이와 그 둘레를 나타내는 두 정수를 공백으로 구분해 한 줄에 출력한다. 가장 넓은 덩어리가 여러 개면 그중 둘레가 가장 작은 것의 정보를 출력한다.

예제1

  1. 예제 1

    입력
    6
    ##....
    ....#.
    .#..#.
    .#####
    ...###
    ....##
    
    예상 출력
    13 22