업데이트:

카테고리: ,

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 씩 증가시키면서 곱하고 이를 큰 수로 나눴을 때, 나눠지면 그것이 최소 공배수라고 정했다.


나의 생각

-

최대 1 분 소요