swexpert
[SWEA] 1216. 회문2 (C++, D3)
해랑쓰
2021. 10. 1. 10:04
728x90
반응형
#define _CRT_SECURE_NO_DEPRECATE
#include <iostream>
#include <string>
using namespace std;
string arr[100];
int ans = 1;
bool rowCheck(int level,int left, int right) {
//행 체크 중간에 왼쪽 오른쪽 다르면 빠져나온다
while (left <= right) {
if (arr[level][left] != arr[level][right]) {
return false;
}
left += 1;
right -= 1;
}
return true;
}
bool colCheck(int level, int left, int right) {
//cout << "left,right:" << left << "," << right << "\n";
while (left <= right) {
if (arr[left][level] != arr[right][level]) {
return false;
}
left += 1;
right -= 1;
}
return true;
}
void go() {
//행체크
for (int i = 0; i < 100; i++) {
if (ans == 100)break;
bool pass = false;
for (int len = 100; len >= 1; len--) {//회문 길이
for (int j = 0; j <= 100 - len; j++) {
if (rowCheck(i, j, j + len-1)) {
if (len > ans)ans = len;
pass = true;
break;
}
}
if (pass)break;//현재 행에서 가장 긴 길이 찾음
}
}
// 열 검사
for (int i = 0; i < 100; i++) {
if (ans == 100)break;
bool pass = false;
for (int len = 100; len >= 1; len--) {//회문 길이
for (int j = 0; j <= 100 - len; j++) {
if (colCheck(i, j, j + len - 1)) {
if (len > ans)ans = len;
pass = true;
break;
}
}
if (pass)break;//현재 행에서 가장 긴 길이 찾음
}
}
}
int main(void) {
ios::sync_with_stdio(false);
cin.tie(NULL);
for (int tc = 1; tc <= 10; tc++)
{
int t;
ans = 1;
cin >> t;
for (int i = 0; i < 100; i++) {
cin >> arr[i];
}
go();
cout << "#" << tc << " "<<ans << "\n";
}
return 0;
}
728x90
반응형