[Programmers] - 최대공약수와 최소공배수

오동훈·2021년 4월 18일
0

Programmers

목록 보기
22/64
post-thumbnail

1. Problem 📃

https://programmers.co.kr/learn/courses/30/lessons/12940

다음 문제는, 최대공약수와 최소공배수를 구해 반환하는 문제입니다.

2. Logic 👨‍🏫

  1. 유클리드 호제법을 이용해 최대공약수를 구한다.
  2. 최소공배수는 a와 b를 곱한값을 최대공약수로 나눠주게 되면 그 값이 최소공배수인점을 이용한다.

3. Code 💻

1. 내가 푼 코드

def gcd(a, b):
    while a % b != 0:
        a , b = b, a % b
    return b

def gcdLCM(a, b):
    return a * b / gcd(a, b)

def solution(n, m):
    answer = [gcd(n, m), gcdLCM(n, m)]
    return answer

4. Feedback 📚

1. 유클리드 호제법

  • 유클리드 호제법은 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘 중 하나입니다.
    호제법이라는 말은 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타냅니다.

2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면(단, a>b), a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를 구하고, 다시 r을 r'로 나눈 나머지를 구하는 과정을 반복하여 나머지가 0이 되었을 때 나누는 수가 a와 b의 최대공약수이다

profile
삽질의 기록들🐥

0개의 댓글