알고리즘 테스트/프로그래머스 문제풀이 및 해설

<프로그래머스 문제풀이: 최대공약수와 최소공배수> Level 1 - 파이썬

개발린이 2020. 11. 23. 22:54

 

생각보다 쉬운 문제였다:

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번째 숫자가 최대공약수 일 것이고, 그 리스트의 모든 숫자를 곱한 값이 최소공배수일 것이다.