문제 링크: https://www.acmicpc.net/problem/25501
백준 재귀 3단계 - 25501번 재귀의 귀재를 풀어보았다.
풀이: 재귀함수를 받아 호출 횟수를 출력하면 된다. 재귀함수에 전역변수를 선언해야 한다.
전역변수를 recursion안에 넣어야 한다.
C++
#include <iostream>
#include <string>
#include <string.h>
using namespace std;
int cnt=0;
int recursion(const string& s, int l, int r)
{
cnt++;
if (l >= r) return 1;
else if (s[l] != s[r]) return 0;
else return recursion(s, l + 1, r - 1);
}
int isPalindrome(const string& s)
{
return recursion(s,0,s.length() - 1);
}
int main()
{
int t;
cin>>t;
string ss;
for(int i=0;i<t;i++)
{
cin>>ss;
cout<<isPalindrome(ss)<<" "<<cnt<<"\n";
cnt=0;
}
}
Python
def recursion(s, l, r):
global cnt # 전역변수를 꼭 표시해줘야한다
cnt+=1
if l >= r: return 1
elif s[l] != s[r]: return 0
else: return recursion(s, l+1, r-1)
def isPalindrome(s):
return recursion(s, 0, len(s)-1)
n=int(input())
for i in range(n):
inp=input()
cnt=0
print(isPalindrome(inp),cnt)
Java
'코테용 문제풀이 > 백준' 카테고리의 다른 글
별 찍기 - 10 풀이 (0) | 2023.01.05 |
---|---|
알고리즘 수업 - 병합 정렬 1 풀이 (0) | 2023.01.05 |
피보나치 수 5 풀이 (0) | 2023.01.05 |
팩토리얼 풀이 (0) | 2023.01.05 |
좌표 압축 풀이 (0) | 2023.01.05 |