자료구조 및 알고리즘/백준

[python] 17478. 재귀함수가 뭔가요 ?

viamemine 2024. 5. 28. 18:52
728x90
반응형

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

 

나는 재귀함수 구현을 헷갈려하는 편인데, 

이 문제를 통해 제대로 알길 원한다.

 

재귀보다 후에 작성한 코드는

재귀가 종료된 후 실행함을 고려하면서 코드를 작성했다.

이렇게 말이다.

 

 

.join(문자열)은 문자열 사이에 특정 문자를 삽입할 수 있는 함수이다. 

이때, 문자열 맨 앞에도 특정 문자를 삽입해야 하기 때문에 문자열에 ""를 추가했다.

 

 

def recursive(cnt, n):
    if cnt == n:
        string = "____" * cnt
        text1= [
            "",
            "\"재귀함수가 뭔가요?\"\n",
            "\"재귀함수는 자기 자신을 호출하는 함수라네\"\n",
            "라고 답변하였지."
        ]
        print(string.join(text1))
        return 1

    string = "____" * cnt
    text = [
        "",
        "\"재귀함수가 뭔가요?\"\n",
        "\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.\n",
        "마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.\n",
        "그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\""
    ]
    print(string.join(text))

    recursive(cnt+1, n)

    print( "____" * cnt + "라고 답변하였지.") # recursive가 종료된 다음 실행

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

 

728x90