Algorithm/케로베로스

[🐉 백준 10단계] 재귀

대인보우 2020. 12. 21. 13:14
반응형

백준 10단계

재귀


10872

def fact(i):
  # 0! 또한 1이다.
  if i <= 1:
    return 1
  return  i * fact(i-1)
 
print(fact(int(input())))

 

10870

def fib(i):
  if i <= 1:
    return i
  return  fib(i-1) + fib(i-2)
 
print(fib(int(input())))

 

2447

def get_stars(n):
    matrix = []
    for i in range(3 * len(n)):
        if i // len(n) == 1: # 3의 배수 +1일때 공백과 별이 번갈아 나타남
            matrix.append(n[i % len(n)] + " " * len(n) + n[i % len(n)])
        else: 
            matrix.append(n[i % len(n)] * 3)
    return matrix
 
star = ["***", "* *", "***"]
n = int(input())
e = 0

while n != 3:
    n = int(n / 3)
    e += 1 # 3의 e승을 표현

for i in range(e):
    star = get_stars(star)
for i in star:
    print(i)

 

 

11729

def hanoi(disk, start, mid, end):
    if disk == 1:
        print('이것:', disk, start, end)
    else:
        hanoi(disk - 1, start, end, mid)
        print('저것:', disk, start, end)
        hanoi(disk - 1, mid, start, end)

total_disk = int(input())
total_mvmt = 0

for disk in range(total_disk):
    total_mvmt = total_mvmt * 2
    total_mvmt += 1

print(total_mvmt)
hanoi(total_disk, 1, 2, 3)

# 3
# 7
# 이것: 1 1 3
# 저것: 2 1 2
# 이것: 1 3 2
# 저것: 3 1 3
# 이것: 1 2 1
# 저것: 2 2 3
# 이것: 1 1 3

알고리즘

작은거 => 시작 > 중간

큰거 => 시작 > 목적지

작은거 => 중간 > 목적지 ..

이 패턴의 반복이다. 

 

반응형