25501번 재귀의 귀재

재귀의 동작을 파악하는 문제

import sys

cnt = 0

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

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

for i in range(int(input())):
    cnt = 0
    print(isPalindrome(sys.stdin.readline().strip()), cnt)

24060번 알고리즘 수업 - 병합 정렬 1

재귀를 활용하여 정렬하는 방법을 배우는 문제

import sys

cnt = 0

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

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

for i in range(int(input())):
    cnt = 0
    print(isPalindrome(sys.stdin.readline().strip()), cnt)

2447번 별 찍기 - 10

재귀적인 패턴을 재귀함수로 찍는 문제

def recursion(n):
    if n == 3 :
        return ['***', '* *','***']
    else :
        i = int(n/3)
        l = recursion(i)
        result = []
        for j in range(i) :
            result.append(l[j]*3)
        for j in range(i) :
            result.append(l[j] + " "*i + l[j])
        for j in range(i) :
            result.append(l[j]*3)
        
        return result

for i in recursion(int(input())):
    print(i)