본문 바로가기
Data Science/알고리즘 공부

[백준][파이썬] 17478번 재귀함수가 뭔가요?

by titaniumm 2020. 3. 11.

재귀함수를 정확히 이해 할 수 있는 문제이다.

재귀함수의 구성큰 크게 3부분으로 나눌 수 있다

1. 탈출을 위한 조건문

특정조건을 설정하여 return을 해주지 않으면 재귀함수에서 영영 빠져나올수 없다

탈출조건문은 한번 시행되며, 마지막 작업을 입력해야 한다.

 

2. 함수 시작~ 재귀함수호출문 전

재귀함수가 반복될때 순서를 잘 파악하며 코드를 작성해야한다.

+1 +2 +3

3. 재귀함수 호출 이후 ~ 함수의 끝

2번은 +1 +2 +3 순으로 작동된다면 3번은 +3+2+1 역순으로 함수가 작동된다.

 

*정답을 맞았지만, 제출하자 틀렸다고 나왔다. 이런 출력형식이 복잡한 문제는 ""나 마침표 등을 조심하자!

 

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

    recur(num,idx+1)
    for i in range(idx):
        print("____",end="")
    print("라고 답변하였지.")



recur(num,0)

댓글