문제 링크
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))