Algorithm/BOJ
KOI 2019 1차 초등부 2 / 회문 - 17609
jhg0406
2020. 8. 13. 14:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#include <iostream>
using namespace std;
int slv(string& s, bool flag) {
int end = s.size()/2;
for(int i = 0; i<end; ++i) {
if(s[i] != s[s.size()-1-i]) {
if(flag) return 2;
string s1 = s.substr(0, i) + s.substr(i+1, s.size()-i-1);
string s2 = s.substr(0, s.size()-i-1) + s.substr(s.size()-i, i);
return min(slv(s1, true), slv(s2, true));
}
}
return flag;
}
int main() {
ios_base::sync_with_stdio(0), cin.tie(0);
int C;
cin >> C;
for(int t = 0; t<C; ++t) {
string s;
cin >> s;
cout << slv(s, false) << "\n";
}
}
|
cs |
https://www.acmicpc.net/problem/17609
17609번: 회문
각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다.
www.acmicpc.net
회문
문자열이 대칭인지 확인하다가 한번 어긋나면, 어긋난 문자열을 뺀 부분문자열에 대해 다시 대칭인지 확인하면 문제를 해결 할 수 있습니다.