Diary, Data, IT

[백준] 17478번 재귀함수가 뭔가요? - Python 본문

Coding Test/Baekjoon

[백준] 17478번 재귀함수가 뭔가요? - Python

라딘 2022. 9. 15. 12:19

 

[백준] 17478번 재귀함수가 뭔가요? - Python

 

 

17478번: 재귀함수가 뭔가요?

평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대

www.acmicpc.net

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

 

 

문제

출력을 원하는 재귀 횟수 N이 주어질 때, 재귀 횟수에 맞는 응답을 출력합니다.

 

예제 입력 1) 

2

 

예제 출력 1)

어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"
________"재귀함수는 자기 자신을 호출하는 함수라네"
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.

 

 

예제 입력 2)

4

 

예제 출력 2)

어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.
"재귀함수가 뭔가요?"
"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____"재귀함수가 뭔가요?"
____"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________"재귀함수가 뭔가요?"
________"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
________마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
________그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
____________"재귀함수가 뭔가요?"
____________"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.
____________마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.
____________그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어."
________________"재귀함수가 뭔가요?"
________________"재귀함수는 자기 자신을 호출하는 함수라네"
________________라고 답변하였지.
____________라고 답변하였지.
________라고 답변하였지.
____라고 답변하였지.
라고 답변하였지.

 

 

아이디어

"재귀함수가 뭔가요? ~ 한 선비가 찾아와서 물었어." / "라고 답변하였지." 까지가 재귀함수로 반복되고 있으며,

반복 횟수에 따라 ____가 늘어나는 것을 확인할 수 있습니다.

또한 마지막 회차에는 "재귀함수는 자기 자신을 호출하는 함수라네"를 추가적으로 출력해야 합니다.

 

1) 크게 보면 "재귀함수가 뭔가요? ~ 한 선비가 찾아와서 물었어."와 "라고 답변하였지." 사이에 재귀함수를 넣어

내부에서 반복적으로 동작하고 있는 것을 확인할 수 있습니다.

 

2) 반복해서 늘어나는 ____를 표현해주기 위해 추가적인 매개변수(a)를 입력받고 재귀함수 내에서 값이 증가하도록 설정합니다.

 

3) 마지막 회차(n == 0)에는 다른 문구를 출력하도록 설정해줘야 합니다.

 

코드

def recursive(n, a = 0):
    if a == 0:
        print('어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.')

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