팰린드롬 기본 문제.
회문이 아닐 경우 그 다음 문자를 비교하면 된다.
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 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | #include <iostream> #include <vector> using namespace std; int T; vector<int> answer; bool palindrome2(string str, int start, int end){ for(int i=start,j=end;i<=j;i++,j--){ if(str[i]!=str[j]){ return false; } } return true; } int palindrome(string str, int start, int end){ for(int i=start,j=end;i<=j;i++,j--){ if(str[i]!=str[j]){ bool check = palindrome2(str, i+1, j); bool check2 = palindrome2(str, i, j-1); if(check || check2){ return 1; } return 2; } } return 0; } int main(){ cin >> T; for(int i=0;i<T;i++){ string str; cin >> str; int size = str.size(); answer.push_back(palindrome(str, 0, size-1)); } for(int i=0;i<answer.size();i++){ cout << answer[i] << endl; } } | cs |
'Coding > 백준' 카테고리의 다른 글
| 10868번 최솟값 (0) | 2021.03.10 |
|---|---|
| 2357번 최솟값과 최댓값 (0) | 2021.03.09 |
| 17608번 막대기 (0) | 2021.03.05 |
| 12865번 평범한 배낭 (0) | 2021.03.04 |
| 10874번 이교수님의 시험 (0) | 2021.03.03 |