[파이썬 / Algorithm] 프로그래머스 연습문제 level1 - 최대공약수와 최소공배수

waterlyn·2021년 12월 3일
0
post-thumbnail
post-custom-banner

문제

https://programmers.co.kr/learn/courses/30/lessons/12940#

풀이

두 개의 수가 주어지면 최대공약수와 최소공배수를 구하는 문제이다.

  • 최대공약수 : 두 수의 같은 약수 값들 중에서 가장 큰 값
  • 최소공배수 : 두 수의 같은 배수 값들 중에서 가장 작은 값

문제에서 예를 들어준 것을 살펴보면,
3과 12의 최대공약수는 3, 최소공배수는 12이다.
3과 12의 약수 중에 가장 큰 수는 3, 3과 12의 배수들 중에 가장 작은 값은 12이다.

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

최대공약수

n과 m 중에 작은 수부터 1씩 줄어들면서 n과 m을 나눌 수 있는 수를 찾는 것이다.

최소공배수

n과 m 중에 큰 수부터 두 개를 곱한 수까지 1씩 늘어나면서 n과 m으로 나누었을 때 나머지가 0임을 모두 만족하는 값을 찾는 것이다.

profile
Hello there 🖤
post-custom-banner

0개의 댓글