문제 설명
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, 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
'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 |