반응형

2022/05/17 3

모두의 알고리즘 문제06. 하노이의 탑 옮기기

def hanoi(n, from_pos, to_pos, aux_pos): # from출발점, to도착점, aux중간과정에 사용할 보조기둥 if n==1: print(from_pos, "->", to_pos)#원판 한개를 옮기는 문제면 그냥 옮기면 됨 return hanoi(n-1, from_pos, aux_pos, to_pos) # 출발점에서 중간과정으로 원판n-1개 이동. 도착점 기둥을 이용해서 print(from_pos, "->", to_pos) #가장 큰 원반을 목적지로 이동 hanoi(n-1, aux_pos, to_pos, from_pos) # 중간 기둥에서 도착점 기둥으로 원판 n-1개 이동 print("n=1") hanoi(1, 1, 3, 2) #원판 1개를 1번기둥에서 3번기둥으로 2번기둥을..

모두의 알고리즘 문제 05. 최대공약수 구하기 연습문제

# 연습문제 5-1 n번째 피보나치 수를 구하는 알고리즘을 재귀호출을 이용해서 구현해 보시오. def fibo (n): if n==0: return 0 if n==1: return 1 return fibo(n-1) + fibo(n-2) print(fibo(7)) #결과 13 print(fibo(10)) #결과 55 #재귀호출 문제는 자신없어서 암담했는데 일단 배운대로 종료조건 설정하고 고민해보다가 #문제 힌트의 (7번값 = 5번값 + 6번값) 을 보고 대강 감을 잡고 풀었다. #이번 재귀호출은 그림으로 표현하자면 트리 구조처럼 된다. #fibo(5)를 호출하면 (4)와 (3)이 호출되고, (4)는 (3)과 (2)를 호출하고, (3)은 (2)와 (1)을 호출한다. #이렇게 하나의 함수가 두개의 함수를 호출..

모두의 알고리즘 문제 05. 최대공약수 구하기

def gcd(a,b): # Greatest Common Divisor, GCD, 최대공약수 i = min(a,b) # a, b 중 최솟값 i를 구한다. i가 최대공약수인지 검사한다. while True: # 반복문의 실행조건이 True라서 중간에 강제로 중지시키지 않는 한 계속 돌아간다. if a%i==0 and b%i==0: # i가 최대공약수라면 함수를 끝내버리는 것으로 반복문도 끝내버림. return i i = i-1 # i가 최대공약수가 아니면 1 줄이고 다시 돌린다. print(gcd(1, 5)) #결과 1 print(gcd(3, 6)) #결과 3 print(gcd(60, 24)) #결과 12 print(gcd(81,27)) #결과 27 print(gcd(232, 112)) #결과 8 def ..

반응형