자료구조&알고리즘/알고리즘 - 언어 기초

[알고리즘 문제 풀이][재귀] 백준 17478번 - 재귀함수가 뭔가요?

초코쨔응 2021. 11. 22. 22:25

백준 17478번 재귀함수가 뭔가요? 문제입니다.

(재귀 연습)

 

- 문제 설명: https://www.acmicpc.net/problem/17478

- 문제 풀이:

 

본 문제는 재귀 함수 구현 연습이 필요한 사람들이 풀면 좋을 문제입니다.

자기 자신을 호출하는 함수를 구현하여 재귀가 동작할 때 어떻게 진행되는지를 실제 출력을 통해 확인해보면 좋을 것 같습니다.

 

- 코드

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

print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
recursion(int(input()), 0)

위의 코드는 print 시에 end="" 인자를 사용하였지만, print 안에서 + 를 이용하여 문자열을 합치는 방법도 가능합니다.

 

- 실수 포인트 & 반례:

1. 텍스트 앞에 "____" 를 써야하지만, "----" 로 잘못 쓴 경우 틀렸습니다를 받을 수 있습니다.