프로그래머스 Lv.1 최대공약수와 최소공배수

서준·2023년 6월 14일
0

프로그래머스 Lv.1

목록 보기
24/35

1. 문제

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

  • 제한사항
    두 수는 1이상 1000000이하의 자연수입니다.

2. 풀이

1차 시도(성공)

import math
def solution(n, m):
    answer = []
    answer.append(math.gcd(n, m))
    answer.append((n*m) / math.gcd(n, m))
    
    return answer

3. Lv.up

  1. 최대공약수, 최소공배수
# 최소공배수
(a*b) / gcd
# 최대공약수
math.gcd(a,b)
  • 프로그래머스 기준으로 lcm함수를 쓸수가 없다. 그러니 기억해두자.
  • 두 자연수의 곱 = 최대공약수 * 최소공배수

4. Ref.

def gcdlcm(a, b):
    c,d = max(a, b), min(a, b)
    t = 1
    while t>0:
        t = c%d
        c, d = d, t
    answer = [ c, int (a*b/c)]
    return answer
  • 유클리드 호제법이라는데..
  • 강의 영상 부시고 왔다
  • 나머지가 0이 되면 그 값이 최대공약수니까 while문이 있고 이걸 세줄만에 해버리네. 파이썬의 기적..
profile
어린이입니다.

0개의 댓글