본문 바로가기
Engineering WIKI/Programmers

[프로그래머스] 최대공약수와 최소공배수

by wonos 2022. 4. 26.
 

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

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

programmers.co.kr

내풀이 (성공)

def solution(n, m):
    answer = []
    # GCD 
    for i in range(min(n, m), 0, -1):
        if n % i == 0 and m % i == 0:
            answer.append(i)
            break
    
    # LCM
    for j in range(max(n, m), (n * m) + 1):
        if j % n == 0 and j % m == 0:
            answer.append(j)
            break
    return answer

다른방법 1

def solution(n, m):
    gcd = lambda a,b : b if not a%b else gcd(b, a%b)
    lcm = lambda a,b : a*b//gcd(a,b)
    return [gcd(n, m), lcm(n, m)]

다른방법 2

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

# 아래는 테스트로 출력해 보기 위한 코드입니다.
print(gcdlcm(3,12))