반응형
회문 (팰린드롬)은 앞뒤로 읽어도 똑같은 단어를 말합니다.
문자열 구현 중 기초역량을 체크하기 위해 항상 등장하는 문제인데, c++로 풀어보았습니다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int T;
cin >> T;
int i,j=0;
int cnt = 0;
string s;
while(T>0)
{
cin >> s;
int t = s.size();
for (i=0; i<t/2; i++)
{
if (s[i]==s[t-i-1])
{
cnt++;
}
else
{
cnt = 0;
}
}
if (cnt!=0)
cout << "#" << j+1 << " " << "1" << "\n";
else if (cnt==0)
cout << "#" << j+1 << " " << "0" << "\n";
j++;
T--;
}
return 0;
}
C++로 넘어오면서 참 좋았던게 C언어 때와 달리 문자열을 다루기가 넘 쉬워져서 행복하네요.
string 헤더파일을 사용해서 s.size()를 구해준게 키 포인트입니다. (C언어의 strlen과 동일)
회문 판별은 cnt을 이용해서 앞뒤가 같을 때마다 카운팅을 해주는 것이고 만약 동일하지 않다면 cnt를 하지 않습니다.
그렇게해서 cnt==0인 애는 회문이 아닌걸로, cnt!=0인 애는 회문인걸로 판별하였습니다.
뭔가 로직이 이상해서 틀릴거 같았는데 풀리긴하네요.
반응형