[BOJ 1286] 부분 직사각형
View as PDF
Submit solution
Assembly, Awk, C, C++, Java, Pascal, Perl, Python, Sed, Text
Points:
3
Time limit:
2.0s
Memory limit:
128M
Problem types
Allowed languages
오민식은 크기가 N×M 이고, 문자로 채워져있는 직사각형 표를 하나 가지고 있다. 이 표를 복사해 표가 2×2 크기의 직사각형을 이루게 만든다. 그 다음, 복사해서 만든 표의 모든 부분 직사각형을 적는다.</p>
예를 들어, 크기가 1×2인 직사각형 표가 있고, 다음과 같은 문자가 채워져 있는 경우를 보자.
OK
표를 복사해 2×2 크기의 직사각형을 이루게 만들면 다음과 같아진다.
OKOK OKOK
여기서 찾을 수 있는 모든 부분 직사각형은 30가지가 있고, 다음과 같다. '.'은 구분을 위해 적은 문자이다.
OKOK .... OKOK OKO. .... OKO. .KOK .... .KOK OK.. .... OK.. .KO. .... .KO. OKOK OKOK .... OKO. OKO. .... .KOK .KOK .... OK.. OK.. .... .KO. .KO. .... ..OK ..OK .... O... .... O... .K.. .... .K.. ..O. .... ..O. ...K .... ...K ..OK .... ..OK O... O... .... .K.. .K.. .... ..O. ..O. .... ...K ...K ....
모든 부분 직사각형에서 각 알파벳이 몇 번 나오는지 구해보자. 위의 경우 K가 40번, O가 40번 등장한다.
입력 형식
첫째 줄에 두 정수 N, M이 주어진다. 둘째 줄부터 N개의 줄에는 표의 각 행에 채워져있는 문자가 주어진다. 문자는 모두 알파벳 대문자이다.
출력 형식
첫째 줄부터 26번째 줄 까지 A가 몇 번 나오는지, B가 몇 번 나오는지, ..., Z가 몇 번 나오는지 까지 출력한다.
예제 입력 1
2 4
GOOD
LUCK
예제 출력 1
0
0
320
280
0
0
280
0
0
0
280
280
0
0
640
0
0
0
0
0
320
0
0
0
0
0
예제 입력 2
1 2
OK
예제 출력 2
0
0
0
0
0
0
0
0
0
0
40
0
0
0
40
0
0
0
0
0
0
0
0
0
0
0
예제 입력 3
4 5
TANYA
HAPPY
BIRTH
DAYYY
예제 출력 3
5168
1280
0
1120
0
0
0
2560
1472
0
0
0
0
1344
0
3008
0
1536
0
2592
0
0
0
0
6320
0
Comments