알고리즘/백준
[Python] 백준 파이썬 25501 재귀의 귀재
dding96
2022. 9. 20. 08:31
https://www.acmicpc.net/problem/25501
25501번: 재귀의 귀재
각 테스트케이스마다, isPalindrome 함수의 반환값과 recursion 함수의 호출 횟수를 한 줄에 공백으로 구분하여 출력한다.
www.acmicpc.net
# 백준 25501 재귀의 귀재
def recursion(s, l, r):
if l >= r: return 1, l+1
elif s[l] != s[r]: return 0, l+1
else:
return recursion(s, l+1, r-1)
def isPalindrome(s):
return recursion(s, 0, len(s)-1)
t = int(input())
for i in range(t):
s = input()
answer = list(isPalindrome(s))
print(answer[0], answer[1])
단순하게 생각해서 recursion 함수를 호출 할 때마다 $l$이 1씩 커지니까 마지막 $l$값이 호출 횟수라고 볼 수 있겠다 싶어서
함숫값을 return할 때 $l$+1을 return받았습니다. 그랬더니 통과했습니다.
다른 방법으로는 직접 수를세는 방법이었는데
cnt = 0
def recursion(s, l, r):
global cnt
cnt += 1
if l >= r: return 1, l+1
elif s[l] != s[r]: return 0, l+1
else:
return recursion(s, l+1, r-1)
def isPalindrome(s):
return recursion(s, 0, len(s)-1)
t = int(input())
for i in range(t):
s = input()
cnt = 0
answer = isPalindrome(s)
print(answer[0], answer[1])
cnt = 0 이라고 변수 할당하고
함수에서 로컬이 아닌 global 변수를 받기 위해 global cnt로 함수 내에서 사용할 수 있게 해줬습니다.