출처: https://meyouus.tistory.com/64 [정보 공유 - For Me For You For Us]
본문으로 바로가기

 

생각보다 쉬운 문제였다:

def solution(n, m):
    num_list = []
    for i in range(1, max(n+1, m+1)):
        if n%i == 0 and m%i == 0:
            num_list.append([i, n/i, m/i])
    max_num = max(num_list)
    j = 1
    for k in max_num:
        j *= k
    return [max_num[0], j]

가장 큰 숫자의 range를 사용하여, 그 숫자로 두 숫자 n, m 둘 다 나누어 떨어진다면, num_list 라는 리스트에 추가해주고, 이것이 끝난다면, 가장 큰 숫자로 나누어떨어진 숫자를 포함하는 리스트가 최대공약수와 최소공배수에 대한 정답을 줄 것이다. 리스트의 0번째 숫자가 최대공약수 일 것이고, 그 리스트의 모든 숫자를 곱한 값이 최소공배수일 것이다.