Python/CoTe
[programmers] 최대공약수와 최소공배수
joannekim0420
2022. 2. 26. 20:00
728x90
https://programmers.co.kr/learn/courses/30/lessons/12940
코딩테스트 연습 - 최대공약수와 최소공배수
두 수를 입력받아 두 수의 최대공약수와 최소공배수를 반환하는 함수, solution을 완성해 보세요. 배열의 맨 앞에 최대공약수, 그다음 최소공배수를 넣어 반환하면 됩니다. 예를 들어 두 수 3, 12의
programmers.co.kr
최대 공약수 - 각각 n,m 의 약수 중 공통으로 갖는 공약수에서 최댓값을 갖는 수
최소 공배수 - 각각 n,m 의 공통된 배수 중 가장 최소 값.
내 코드
def solution(n, m):
answer = []
#두 수는 최대 1000000까지라고 했으니까 INF 설정
INF = 1000000
#각각 m 과 n의 약수를 구한다.
max_n = [x for x in range(1, n+1) if n%x ==0]
max_m = [x for x in range(1, m+1) if m%x ==0]
#집합 함수로 최대 공약수 구하기
answer.append(max(set(max_n)&set(max_m)))
#최소 공배수를 구하는 방법 - 최소 공배수 개념 이용
answer.append(min(i for i in range(min(n,m),INF,min(n,m)) if i%n==0 and i%m==0))
return answer
최대 공약수와 최소 공배수의 개념을 이용해 구하는 코드
파이썬 내장함수 이용해 구하는 코드
def gcd(a, b):
return b if a % b == 0 else gcd(b, a % b)
def lcm(a, b):
return int(a * b / gcd(a, b))
def gcdlcm(a, b):
answer = [gcd(a,b), lcm(a,b)]
return answer