Development Project

[ Baekjoon - 단계별로 풀어보기(06/01) ] - 9단계 : 재귀 본문

CodingTest/Baekjoon

[ Baekjoon - 단계별로 풀어보기(06/01) ] - 9단계 : 재귀

나를 위한 시간 2022. 6. 1. 23:56
  • 10872 : 팩토리얼
def factorial(n):
    if n==0 or n==1:
        return 1
    return n*factorial(n-1)

print(factorial(int(input())))

 

  • 10870 : 피보나치 수 5
def fib(num):
    if num<=1:
        return num
    return fib(num-1)+fib(num-2)

n=int(input())
print(fib(n))

 

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

 

  • 2447 : 별 찍기 - 10
def stars(n):
    if n==1:
        return ['*']

    s_list=stars(n//3)
    l=[]

    for star in s_list:
        l.append(star*3)
    for star in s_list:
        l.append(star+' '*(n//3)+star)
    for star in s_list:
        l.append(star*3)
    return l

n=int(input())
print('\n'.join(stars(n)))

 

  • 11729 : 하노이 탑 이동 순서
def h(a,b,c):
    if (a==1):
        print(b,c)
    else:
        h(a-1, b, 6-b-c)
        print(b, c)
        h(a-1, 6-b-c, c)
a = int(input())
print(2**a-1)
h(a, 1, 3)
Comments