ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 최대공약수와 최소공배수
    Programmers 2023. 3. 26. 01:08
    728x90

    문제 설명

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

    제한 사항

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

    입출력 예

    n m return

    3 12 [3, 12]
    2 5 [1, 10]

    나의 풀이

    def solution(n, m):
        a = n
        b = m
        if n>m: # 반드시 큰 값이 m, 작은 값이 n이 되게끔 만들어준다. 
            n,m = m,n
        while m%n: # m을 n으로 나눈 나머지가 0이 아닌 동안에
            r = m%n 
            m = n
            n = r
        return [n, a*b/n] # n은 while 루프를 통해 최대공약수가 되며, 
                          #최소공배수는 두 수의 곱에서 n으로 나눈 값이다.
    

    너무 오래걸렸던 탓일까, 잘 안 풀려서 구글링을 통해 문제를 풀었다…

    접근하는 방향은 비슷했으나, 계속 if 절로 처음부터 처리하고 else를 이용해 재귀함수를 사용하려고 했던 것이 패착이 된 것 같다. 처음 접근했던 나머지 연산에 더 집중을 했다면 충분히 나올 수 있었던 코드였어서 더욱 아쉽다.

    728x90

    'Programmers' 카테고리의 다른 글

    [재귀 함수] 재귀 함수란 무엇인가요?  (0) 2023.04.07
    같은 숫자는 싫어  (0) 2023.03.26
    행렬의 덧셈  (0) 2023.03.23
    나누어 떨어지는 숫자배열  (0) 2023.03.19
    실패율  (0) 2023.03.19
Designed by Tistory.