원래썻던 방법
a,b=map(int,input().split())
ans=[]
# 최대공약수가 될수있는 숫자전부를 검사해서 최대공약수를 찾아낸다
for i in range(min([a,b]),0,-1):
if a%i==0 and b%i==0:
최대공약수=i
break
print(최대공약수)
이번에 배운 유클리드 알고리즘 이용해서 최대공약수구하는 코딩을 해보았다
def gcb(a,b):
b=min([a,b])
a=max([a,b])
if b==0:
return a
return gcb(b, a%b)
a,b=map(int,input().split())
gcb(a,b)
시간체크 유클리드 알고리즘은 몇초가걸릴까?
in
import timeit
start_time = timeit.default_timer() # 시작 시간 체크
def gcb(a,b):
b=min([a,b])
a=max([a,b])
if b==0:
return a
return gcb(b, a%b)
print(gcb(254541,21845))
terminate_time = timeit.default_timer() # 종료 시간 체크
print(f"{terminate_time - start_time}초 걸렸습니다.")
out
17
0.002226368000265211초 걸렸습니다.
import timeit
start_time = timeit.default_timer() # 시작 시간 체크
a=254541
b=21845
for i in range(min([a,b]),0,-1):
if a%i==0 and b%i==0:
최대공약수=i
break
print(최대공약수)
terminate_time = timeit.default_timer() # 종료 시간 체크
print(f"{terminate_time - start_time}초 걸렸습니다.")
17
0.0048425109998788685초 걸렸습니다.
약 두배정도 빨라진것을 확인하였다
결론: 최대공약수 구할때는 유클리드 알고리즘
개미전사 풀이-동적프로그래밍(파이썬) (0) | 2022.06.04 |
---|---|
동적계획법(다이나믹 프로그래밍) 배워보기-python (0) | 2022.06.04 |
유클리드 호제법에 대한 나의 이해 (0) | 2022.05.28 |
백준문제풀이-검문&정수론공부 (0) | 2022.05.27 |
시간을아끼는법2 set (파이썬) (0) | 2022.05.21 |