백준 17478번 풀이

문제

이거 꺼무에 나왔던 드립인데…

이걸 코딩하면 된다.

참고문헌

https://yoonsang-it.tistory.com/51

풀이

일단 기본 골자는

def factorial(n):
  if n == 0:
    return 1
  return n * factorial(n-1)

이놈이랑 비슷하다. (저건 재귀함수로 계승 짠 거) 이제 문장 위치와 함수 위치가 중요하지…

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

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

whatisrecursion(n)

아직 내지 맙시다. 언더바 남았어요.

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

이건 2에 대한 예시 출력인데, 언더바가 8개까지 붙어있는 게 있다. 함수를 총 세 번 호출하게 되고, 호출할때마다 언더바가 추가되는 식인데 4n꼴로 붙는다. 어? 그럼 그냥 k 곱하면 안되요? 그러면 밖에 있는 놈이 언더바가 제일 길어진다.

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

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

일단 이게 답이다. 근데 정답률 망했고…

  1. print(‘_’ * 4 * (n – k) + ‘라고 답변하였지.’) 에 +를 ,로 바꾸면 쓸데없는 공백이 붙는다.
  2. print(‘_’ * 4 * (n – k) + ‘”재귀함수가 뭔가요?”‘) <<여기 따옴표 빼먹었다.