반응형
https://www.acmicpc.net/problem/17609
시간초과가 나서 유사회문을 일중포문으로 바꿨습니다. 자꾸 틀렸습니다가 나왔었는데 유사회문일 경우 범위를 잘못지정해줘서 "abcd"가 1이 나오고 있었습니다
#include <iostream>
#include <string>
using namespace std;
int n, m;
string s;
int isPalindrome() {
for (int i = 0; i < s.length() / 2; i++)
if (s[i] != s[s.length() - 1 - i]) return 0;
return 1;
}
int canPalindrome() {
for (int k = 0; k < 2; k++) {
int f = 0;
for (int i = 0, j = s.length() - 1; i <= j + 2; i++, j--) {
if (s[i] != s[j]) {
if (f) {
f = 0;
break;
}
k ? j-- : i++;
f = 1;
}
}
if (f) return 1;
}
return 0;
}
int check() {
if (isPalindrome()) return 0;
else if (canPalindrome()) return 1;
else return 2;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> n;
for (int i = 0; i < n; i++) {
cin >> s;
cout << check() << "\n";
}
}
반응형
'Algorithm' 카테고리의 다른 글
백준 12781 : PIZZA ALVOLOC (0) | 2021.11.11 |
---|---|
백준 12784 : 인하니카 공화국 (0) | 2021.11.11 |
백준 13459 : 구슬 탈출 (0) | 2021.11.11 |
백준 10830 : 행렬 제곱 (0) | 2021.11.11 |
백준 6137 : 문자열 생성 (0) | 2021.11.11 |