코딩테스트/프로그래머스

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

박소민 2022. 2. 7. 22:37
문제) 최대공약수와 최소공배수
 

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

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

programmers.co.kr

 

 

  • 내 풀이

- 유클리드 호제법 사용

def solution(n, m):
    #유클리드 호제법
    #최대공약수
    a,b=n,m
    GCD=0
    LCM=0
    while b:
      a,b=b,a%b 
    GCD=a
    #최소공배수
    LCM= n*m // GCD
    answer=[GCD,LCM]
    return answer

print(solution(2,10))

 

  • 다른 사람 풀이 1

- 유클리드 호제법 + 람다식 

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

print(solution(2,10))

 

  • 다른 사람 풀이 2

- 유클리드 호제법: 조금 다른 방식

def solution(n, m):
  #유클리드 호제법
  #꼭 큰 값 x에 안넣어도 결국 바껴서 들어가긴 함
  x,y =max(n,m), min(n,m)
  r=1
  while r>0:
    r=x%y
    x,y=y,r
  answer=[x, int(n*m)//x]
  return answer

print(solution(2,10))

최대공약수/최소공배수 개념 
 

[Python] 파이썬- 최대공약수, 최소공배수

최대공약수/ 최소공배수 최대공약수 GCD(Greatest Common Divisor) : 두 수의 공통 약수 중 가장 큰 수 최소공배수 LCM(Largest Common Multiple) : 각각의 배수 중 공통이고, 가장 작은 수 for문 활용한 최대공약..

yygs321.tistory.com