백준 | 브론즈 2 | 25501번 | 재귀의 귀재 | Python

kimminjunnn·2025년 10월 30일

알고리즘

목록 보기
219/318

문제 출처 : https://www.acmicpc.net/problem/25501

문제 파악

문자열이 주어졌을 때,
1. 팰린드롬인지 판별하고
2. 재귀함수가 몇 번 호출되었는지 함께 출력하는 문제다.

팰린드롬이란, 앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열이다.

해답 및 풀이

import sys
# sys.setrecursionlimit(10000)

input = sys.stdin.readline

# 팰린드롬이란, 앞에서부터 읽었을 때와 뒤에서부터 읽었을 때가 같은 문자열


def recursion(s,l,r):
    global cnt
    cnt += 1
    if l >= r: # 다 돌았는데 0이 나온적 없다? 팰린드롬임 -> 1 리턴
        return 1
    elif s[l] != s[r]: # 같지 않다면 펠린드롬이 아님 -> 0 리턴
        return 0
    else: # 아무것도 안걸렸으면 재귀. 가운데로 하나씩 모으면서 다시 검사.
        return recursion(s,l+1,r-1);

def isPalindrome(s):
    global cnt
    cnt = 0 # 케이스 시작마다 리셋
    res = recursion(s,0,len(s)-1)
    return res, cnt


T = int(input())

for i in range(T):
    S = input().strip()
    print(*isPalindrome(S))

profile
Frontend Engineers

0개의 댓글