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


날짜: 2021년 5월 20일
소요 시간: 27분 9초
카테고리: 수학 문제
태그: 레벨1, 파이썬

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

입출력 예시

nmreturn
312[3, 12]
25[1, 10]

내가 적은 코드

def solution(n, m):
    a = n
    b = m
    while b:
        a, b = b, a%b
        min = a
        
    max = (n/min)*(m/min)*min
    
    return [min, max]

풀이 과정

유클리드 호제법을 활용하여 최소공배수를 구했고, 두개의 인자와 최소공배수 사이의 관계를 활용하여 최대공약수를 구했다.

베스트 코드

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

반성

  • 최대공약수와 최소공배수 계산을 모두 해야해서 nmab로 치환해서 계산하였는데, 베스트 코드는 함수를 여러개 만들었다.
  • 로직은 모두 비슷한데 어떤 방식으로 푸는 것이 가장 효율적인지를 알고 코드를 짜는 능력을 기를 필요가 있을 것 같다.




© 2021. by hminkim