# 본인 코드
#include <bits/stdc++.h>
using namespace std;
string str;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> str;
int value = str.size() % 2 == 0 ? str.size() / 2 - 1 : str.size() / 2;
for (int i = 0; i < value; i++){
if(str[i] != str[str.size() - 1 - i]){
cout << 0 << "\n";
return 0;
}
}
if(str.length() == 2){
cout << 0 << "\n";
return 0;
}
cout << 1 << "\n";
return 0;
}
94%에서 오류가 발생한다. 한글자 반례, 두글자 반례 모두 찾았는데 다른 반례는 못찾아서 답을 확인했음.
# 개선 코드
#include <bits/stdc++.h>
using namespace std;
string str, temp;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> str;
reverse(temp.begin(), temp.end());
if (temp == str){
cout << 1 << "\n";
} else {
cout << 0 << "\n";
}
return 0;
}
문자열이 팰린드롬이라는 뜻은 뒤집은 문자열이 원래 문자열과 동일하다는 의미이므로, reverse
문자열을 변수에 담아 서로 비교한다. string
타입 비교는 단순하게 비교 연산자를 사용해도 된다.