얼렁뚱땅 스며드는 Data Science

Algorithm/Daily Coding Tests Challenge

[프로그래머스 코딩테스트] lv1. 최대공약수와 최소공배수

Jesip14 2021. 8. 18. 15:03

문제 설명

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의 최대공약수는 3, 최소공배수는 12이므로 solution(3, 12)는 [3, 12]를 반환해야 합니다.

나의 풀이

def gcd(a, b):
    if a % b == 0:
        return b
    else:
        return gcd(b, a % b)    

def solution(n, m):
    GCD = gcd(n, m)
    LCM = n * m / GCD
    return [GCD, LCM]

이 문제는 유클리드 호제법을 이용하여 풀면 매우 쉽게 풀리는 문제입니다. 최대공배수를 구해준 뒤, 최소공배수는 두 수를 곱한 값에 최대공약수를 빼는 방법을 이용하였습니다. 다음은 유클리드 호제법을 잘 설명해놓은 글입니다.

유클리드 호제법 : https://myjamong.tistory.com/138

 

최대공약수(GCD), 최소공배수(LCM) 구하기 유클리드 호제법 알고리즘 :: 코드자몽

최대공약수 GCD(Greatest Common Divisor) 최대공약수는 두 자연수의 공통된 약수 중 가장 큰 수를 의미한다. ex) 72 와 30의 최대공약수는 6이다. 최소공배수 LCM(Least Common Multiple) 최소공배수는 두 자연..

myjamong.tistory.com

 

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12940

 

코딩테스트 연습 - 최대공약수와 최소공배수

두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의

programmers.co.kr