풀이법
1) 재귀를 통해 맨 끝과 맨 앞을 비교하며 회문인지 판단한다.
#include <iostream>
#include <cstring>
using namespace std;
int is_panlindrome(string input_str)
{
if (input_str.size()<=1)
{
return 1;
}
else
{
char a = input_str[0];
char b = input_str[input_str.size() - 1];
if (a == b)
{
string temp=input_str.substr(1, input_str.size()-2);
return is_panlindrome(temp);
}
else if(a!=b)
{
return 0;
}
}
}
void print(int val)
{
if (val >0)
{
cout << "다음 panlindrome은 회문이 맞습니다" << "\n\n";
}
else
{
cout<< "다음 panlindrome은 회문이 아닙니다" << "\n\n";
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
//cout << "level 은 회문입니까?" << "\n";
//print(is_panlindrome("level"));
//cout << "kayak 은 회문입니까?" << "\n";
//print(is_panlindrome("kayak"));
//cout << "abba 는 회문입니까?" << "\n";
//print(is_panlindrome("abba"));
//cout << "summuus 는 회문입니까?" << "\n";
//print(is_panlindrome("summuus"));
//cout << "ipreferpi 는 회문입니까?" << "\n";
//print(is_panlindrome("ipreferpi"));
//cout << "comcom 은 회문입니까?" << "\n";
//print(is_panlindrome("comcom"));
//
cout << "회문인 것 두번 출력" << "\n\n";
cout << "autootua 은 회문입니까?" << "\n";
print(is_panlindrome("autootua"));
cout << "maraprparam 는 회문입니까?" << "\n";
print(is_panlindrome("maraprparam"));
cout << "\n" << "\n";
cout << "회문이 아닌 것 두번 출력" << "\n\n";
cout << "marrac 은 회문입니까?" << "\n";
print(is_panlindrome("marrac"));
cout << "openstenpo 는 회문입니까?" << "\n";
print(is_panlindrome("openstnepo"));
}
'데이터구조와알고리즘' 카테고리의 다른 글
데이터구조와알고리즘 과제_후위연산식(Stack) (0) | 2021.04.13 |
---|---|
데이터구조와알고리즘 과제_Polynomial 구현 (0) | 2021.04.13 |