BOJ 17478 - 재귀함수가 뭔가요?

folder_open Algorithm / BOJ / silver | date_range

sell #BOJ #17478 #silver #python #파이썬 #코딩테스트 #알고리즘

문제 링크

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

구현

간단한 재귀 문제이다. 문자열을 +=연산자로 합치거나 재귀 내에서 출력을 하면 시간이 오래 걸릴 것이라 생각해서 배열에 담고 나중에 join해주는 방식을 채택했는데, 다른 사람들 제출을 보니 그냥 재귀내에서 출력하는게 더 빨랐던 것 같다.

def recur(n: int, depth: int) -> str:
    result = []
    result.append(("____" * depth) + '"재귀함수가 뭔가요?"\n')
    
    if depth == n:
        result.append(("____" * depth) + '"재귀함수는 자기 자신을 호출하는 함수라네"\n')
    else:
        result.append(("____" * depth) + 
                      '"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n')
        result.append(("____" * depth) + 
                      '마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n')
        result.append(("____" * depth) + 
                      '그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."\n')
        result.append(recur(n, depth + 1))
    
    result.append(("____" * depth) + "라고 답변하였지.\n")
    return ''.join(result)

if __name__ == '__main__':
    n = int(input())
    print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
    print(recur(n, 0))