코딩테스트

[백준] 25501 | 재귀의 귀재 [파이썬/python]

사용할수없는닉네임이왜이렇게많지ㅠㅠ 2025. 3. 18. 17:09
728x90

문제

link: https://www.acmicpc.net/problem/25501

문자열의 팰린드롬 여부와 팰린드롬 여부를 확인하기 위해 재귀함수를 호출한 횟수를 출력하는 문제이다.

(C, python, JAVA의 경우 문제 페이지에서 팰린드롬 여부를 확인하기 위한 함수 코드를 제공하고 있기 때문에 복사해서 이용할 수 있다.)

 

접근

본문에 제시된 함수에 재귀함수 호출 횟수를 확인하기 위한 변수 cnt를 추가하여 문제를 해결했다.

 

코드

import sys
input = sys.stdin.readline

def recursion(s, l, r, cnt):
    cnt += 1
    if l >= r: return 1, cnt
    elif s[l] != s[r]: return 0, cnt
    else: return recursion(s, l+1, r-1, cnt)

def isPalindrome(s):
    return recursion(s, 0, len(s)-1, cnt)

T = int(input())

for _ in range(T):
    S = input().rstrip()
    cnt = 0
    isP, cnt = isPalindrome(S)
    print(isP, cnt)
728x90