사다리꼴
시간 제한2초메모리 제한512 MB
별표로 그린 ASCII 그림에서 변이 수평선과 수직선 또는 45도 기울기 선으로 이루어진 사다리꼴을 모두 찾아 넓이별 개수를 출력한다.
문제
컴퓨터를 써 본 적이 있다면 ASCII 문자로 그린 그림을 본 적이 있을 것이다. 이런 그림은 GIF나 Postscript 그림만큼 예쁘지는 않아도 다루기가 훨씬 쉽다. ASCII 그림은 텍스트 편집기로 간단히 그릴 수 있고, 텍스트만 전달할 수 있는 매체에서도 그래픽 정보를 표현할 수 있다. 이런 그림에서 정보를 추출하는 프로그램은 쓸모가 있을 수 있다.
우리는 별표(*)와 공백으로만 이루어진 단순한 사다리꼴 그림에 관심이 있다. 사다리꼴은 적어도 한 쌍의 변이 평행한 사각형이다. 이 문제에서 다루는 그림은 다음 조건을 만족한다.
- 그림의 모든 별표는 어떤 사다리꼴의 변에 속한다.
- 사다리꼴의 두 변은 수평이고, 나머지 두 변은 수직이거나 45도 기울어진다.
- 모든 변의 길이는 2보다 크다.
- 서로 다른 두 사다리꼴은 별표를 공유하지 않는다.
- 두 사다리꼴의 변은 맞닿지 않는다. 즉, 한 사다리꼴의 별표는 다른 사다리꼴의 별표 여덟 이웃에 나타나지 않는다. 예를 들어 다음과 같은 배치는 나타나지 않는다.
|
***
|
****
* *
****
사다리꼴이 다른 사다리꼴 안에 들어 있을 수도 있다. 예를 들어 다음은 올바른 그림이다.
-
*
-
*
여러분의 임무는 그림에서 사다리꼴을 인식하고 각 사다리꼴의 넓이를 계산하는 것이다. 사다리꼴의 넓이는 네 변 위와 그 안쪽에 있는 문자의 수이며, 안에 들어 있는 사다리꼴의 넓이도 포함한다.
입력
입력에는 여러 그림의 정보가 들어 있다. 각 그림은 정수 h (1 ≤ h ≤ 1000)가 있는 줄로 시작하며, h는 그림의 높이(줄 수)이다. 그림의 각 줄은 별표와 공백으로만 이루어지고 길이가 80 미만이다. 그림의 줄은 길이가 서로 다를 수 있고 끝에 불필요한 공백이 있을 수도 있다. 마지막 그림 뒤에는 정수 0이 입력을 끝낸다.
출력
각 그림마다 두 정수 m과 n을 순서대로 담은 줄을 출력한다. 이는 그림에 넓이가 m인 사다리꼴이 n개 있다는 뜻이다. 한 그림의 출력 줄은 m에 대해 오름차순이어야 하며, 그림에 있는 모든 사다리꼴을 세야 한다.
두 그림의 출력 줄 사이는 하이픈(-) 열 개로 이루어진 한 줄로 구분한다. 이 구분선은 첫 번째 그림의 출력 앞이나 마지막 그림의 출력 뒤에는 나타나지 않는다.