APS/SWEA
1979. 어디에 단어가 들어갈 수 있을까
문래동까마귀
2021. 8. 24. 21:22
- 테두리 칠하고 시작하기
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
int cnt;
int n, m;
int map[20][20];
vector<int>word;
void check(int y, int x) {
for (int i = 0; i < m+2; i++) {
if (x + i >= n + 2 || word[i] != map[y][x + i])break;
if (i == m + 1)
cnt++;
}
for (int i = 0; i < m + 2; i++) {
if (y + i >= n + 2 || word[i] != map[y + i][x])break;
if (i == m + 1)
cnt++;
}
}
int sun = 0;
void run() {
sun++;
cnt = 0;
word.clear();
cin >> n >> m;
word.push_back(0);
for (int i = 0; i < m; i++) {
word.push_back(1);
}
word.push_back(0);
for (int i = 0; i < n+2; i++) {
for (int j = 0; j < n+2; j++) {
if (i == 0 || i == n + 1 || j == 0 || j == n + 1)
map[i][j] = 0;
else cin >> map[i][j];
}
}
/*for (int i = 0; i < n + 2; i++) {
for (int j = 0; j < n + 2; j++) {
cout << map[i][j] << " ";
}
cout << endl;
}*/
for (int i = 0; i <= n + 2; i++) {
for (int j = 0; j <= n+2; j++) {
check(i, j);
}
}
cout << "#" << sun << " " << cnt<< endl;
}
int main() {
int t;
cin >> t;
for (int i = 0; i < t; i++)
run();
return 0;
}