본문 바로가기
BOJ/[BOJ] Python

백준 17478번 풀이

by Lv. 35 라이츄 2022. 8. 19.

문제

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

 

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

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

www.acmicpc.net

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

이걸 코딩하면 된다.

 

Reference

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

 

백준 17478번 파이썬 풀이: 재귀함수가 뭔가요?

백준 17478번 재귀함수가 뭔가요? 알고리즘 분류: 재귀 링크: www.acmicpc.net/problem/17478 17478번: 재귀함수가 뭔가요? 평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재

yoonsang-it.tistory.com

 

풀이

일단 기본 골자는

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) + ‘”재귀함수가 뭔가요?”‘) <<여기 따옴표 빼먹었다.

'BOJ > [BOJ] Python' 카테고리의 다른 글

백준 2477번 풀이  (0) 2022.08.19
백준 2447번 풀이  (0) 2022.08.19
백준 4153번 풀이  (0) 2022.08.19
백준 1002번 풀이  (0) 2022.08.19
백준 10870번 풀이  (0) 2022.08.19

최근댓글

최근글

skin by © 2024 ttutta