문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, 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
문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12940
'Algorithm > Daily Coding Tests Challenge' 카테고리의 다른 글
[프로그래머스 코딩테스트] lv1. 2주차 : 상호 평가 (0) | 2021.08.18 |
---|---|
[프로그래머스 코딩테스트] lv1. 행렬의 덧셈 (0) | 2021.08.18 |
[프로그래머스 코딩테스트] lv1. 직사각형 별찍기 (0) | 2021.08.17 |
[프로그래머스 코딩테스트] lv1. x만큼 간격이 있는 n개의 숫자 (0) | 2021.08.17 |
[프로그래머스 코딩테스트] lv1. 핸드폰 번호 가리기 (0) | 2021.08.17 |