Algorithm/Problems

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

공부좀하시졍 2022. 11. 9. 14:50

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

 

25501번: 재귀의 귀재

각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.

www.acmicpc.net

import sys

read = sys.stdin.readline

n = int(read())

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)

  
for _ in range(n):
  string = read().rstrip()
  cnt = 0
  print(isPalindrome(string), cnt)

처음엔 문자열 받고 append로 리스트에 추가해주려고 했는데 그럴 필요가 없었다. 

rstrip()함수를 이용해 개행을 없애 문자열을 입력 받고 cnt를 0으로 초기화 해준다.

이후 힌트에 나와있는 코드의 recursion에 cnt를 한번씩 더해준다.

이때 사용된 cnt변수는 global을 사용함으로써 지역변수가 아닌 전역변수를 사용한 것이다.