[SWEA] 1216. 회문2 (C++, D3)
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
반응형
'swexpert' 카테고리의 다른 글
[SWEXPERT] 1232. 사칙연산 (이진트리, C++, D4) (0) | 2021.10.01 |
---|---|
[SWEA] 1209. SUM2 (C++, D3) (0) | 2021.10.01 |
[swexpert] 2806. N-Queen (dfs, C++) [D3] (0) | 2021.10.01 |
[swexpert] 1267. 작업순서 (C++, 위상정렬, dfs) [D6] (0) | 2021.09.30 |
[swea] 1265. 달란트2 (C++, 수학?) (0) | 2021.09.30 |
TAGS.