반응형

회문 (팰린드롬)은 앞뒤로 읽어도 똑같은 단어를 말합니다.

문자열 구현 중 기초역량을 체크하기 위해 항상 등장하는 문제인데, 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인 애는 회문인걸로 판별하였습니다.

 

뭔가 로직이 이상해서 틀릴거 같았는데 풀리긴하네요.

 

 

반응형

+ Recent posts