문제1342--[창의적 알고리즘(중급)] 두더지 굴(S)

1342: [창의적 알고리즘(중급)] 두더지 굴(S)

[만든사람 : 전민우(2009), 전현석(설명수정/채점데이터, 2021)]
시간제한 : 1.000 sec  메모리제한 : 128 MiB

문제 설명

영일이는 땅 속의 굴이 모두 연결되어 있으면 한 마리의 두더지가 사는 집이라는 사실을 알아냈다.

영일이는 마을 뒷산에 사는 두더지가 모두 몇 마리인지 궁금해졌다.

영일이는 특수 장비를 이용해서 뒷산에 있는 두더지 굴의 상태를 모두 찍은 지도를 만들 수 있었다.

지도는 직사각형인데 흙은 0으로 나타내고, 굴은 1로 나타낸다.
만약, 두더지 굴이 위-아래-왼쪽-오른쪽 어느 한쪽으로라도 연결되어 있으면, 그건 두더지 한 마리가 사는 집이라고 볼 수 있다.





[그림 1]과 같은 두더지굴 지도를 이어붙여 그리면서 서로 다른 번호를 붙이면, [그림 2]와 같이 두더지 굴의 개수와 두더지 굴의 크기를 눈으로 알아볼 수 있다.

특수 촬영 사진 데이터를 입력받아 두더지 굴의 수를 출력하고, 각 두더지 굴의 크기를 오름차순으로 정렬하여 출력하는 프로그램을 작성해보자.

입력 설명

첫 번째 줄에 두더지 굴의 가로, 세로의 크기를 나타내는 n이 입력된다.
두 번째 줄부터 n줄에 걸쳐 n개씩의 0 또는 1의 사진 데이터가 입력된다.
(1<=n<=10)
(0<=k<=1)

출력 설명

첫 번째 줄에 두더지 굴의 개수를 출력하고
두 번째 줄부터 각각의 두더지 굴의 크기를 한 줄에 한 개씩 내림차순으로 출력한다.

입력 예시 Copy

7
0110100
0110101
1110101
0000111
0100000
0111110
0111000

출력 예시 Copy

3
9
8
7

도움

- 창의적 알고리즘(중급)