2609 최대공약수와 최소공배수
업데이트:
1. 문제
문제는 링크에 들어가면 있다.
2. 정답 코드
문제의 내 정답 코드는 다음과 같다.
import math
def find_max(A,B,min_crit,max_crit):
max_list = []
for i in range(1,math.floor(math.sqrt(A))+1):
if min_crit % i == 0 :
max_list.append(min_crit//i)
max_list.append(i)
max_list.sort(reverse=True)
for m in max_list :
if max_crit % m == 0 :
print(m)
break
def find_min(A,B,min_crit,max_crit):
i = 1
while True:
if (min_crit * i) % max_crit == 0 :
print(min_crit*i)
break
else :
i+=1
A,B = map(int,input().split())
# 최대 공약수와 최소 공배수
min_crit = min(A,B)
max_crit = max(A,B)
find_max(A,B,min_crit,max_crit)
find_min(A,B,min_crit,max_crit)
3. 풀이 및 생각
문제 풀이
최대 공약수는 둘 중 더 큰 수의 약수들을 먼저 찾고, 그 약수들을 내림차순으로 정렬하여 작은 수를 나눴을 때 나눠지면 그것이 최대 공약수이다.
최소 공배수는 더 작은 수에 i를 1 씩 증가시키면서 곱하고 이를 큰 수로 나눴을 때, 나눠지면 그것이 최소 공배수라고 정했다.
나의 생각
-