최대공약수와 최소공배수

2024. 9. 5. 14:33프로그래머스-코딩테스트/Lv.1

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

문제


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

 

 

 

 

코드


def solution(n, m):
    answer = []
    for i in range(min(n, m), 0, -1):
        if (n%i==0) & (m%i==0):
            answer.append(i)
            break
    for j in range(max(n, m), 1000000):
        if (j%n==0) & (j%m==0):
            answer.append(j)
            break

    return answer
  • 작은 수부터 -1씩하며 n,m의 약수를 찾음
  • 큰 수부터 +1씩하며 n,m의 배수를 찾음

 

 

노트


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)]
  • 재귀함수. 자기 자신을 호출!
  •  A*B = gcd(A,B) * lcm(A,B) 이용

 

 

참조


https://school.programmers.co.kr/learn/courses/30/lessons/12940/solution_groups?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

 

'프로그래머스-코딩테스트 > Lv.1' 카테고리의 다른 글

예산  (0) 2024.09.05
같은 숫자는 싫어  (0) 2024.09.05
직사각형 별찍기  (0) 2024.09.05
문자열 다루기 기본  (0) 2024.09.05
부족한 금액 계산하기  (1) 2024.09.04