백준 25501 c++

magicdrill·2024년 4월 18일

백준 문제풀이

목록 보기
323/673

백준 25501 c++

#include <iostream>
#include <cstring>
//#include <string>
#pragma warning (disable:4996);

using namespace std;

int input(int lower, int upper);
void input_string(char** str, int size);
//void input_string(string* str, int size);
void check_palindrome(char** str, int size);
//void check_palindrome(string* str, int size);
int isPalindrome(const char* s);
int recursion(const char* s, int l, int r);

int counter = 0;

int main(void)
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	int T, i;
	//string* str;
	char** str;

	T = input(1, 1000);
	//str = new string[T];
	str = new char* [T];
	for (i = 0; i < T; i++)
	{
		str[i] = new char[1001];
	}
	input_string(str, T);
	check_palindrome(str, T);
	//delete[] str;
	for (i = 0; i < T; i++)
	{
		delete[] str[i];
	}
	delete[] str;

	return 0;
}

int input(int lower, int upper)
{
	//cout << "input()" << endl;
	int A;

	while (1)
	{
		cin >> A;
		if (A >= lower && A <= upper)
		{
			break;
		}
		else
		{
			;
		}
	}

	return A;
}

void input_string(char** str, int size)
//void input_string(string *str, int size)
{
	int i;
	char temp[1001];

	for (i = 0; i < size; i++)
	{
		cin >> str[i];
		cin >> temp;
		strcpy(str[i], temp);
	}

	return;
}

void check_palindrome(char** str, int size)
//void check_palindrome(string* str, int size)
{
	int i;
	//const char* temp;

	for (i = 0; i < size; i++)
	{
		counter = 0;
		//temp = str[i].c_str();
		cout << isPalindrome(str[i]) << " " << counter <<"\n";
		//cout << isPalindrome(temp) << " " << counter << "\n";
	}
}

int recursion(const char* s, int l, int r) 
{
	counter++;
	if (l >= r) 
		return 1;
	else if (s[l] != s[r]) 
		return 0;
	else 
		return recursion(s, l + 1, r - 1);
}

int isPalindrome(const char* s)
{
	return recursion(s, 0, strlen(s) - 1);
}

0개의 댓글