반응형

안녕하세요. 개발 중인 정주입니다.

 

오늘은 프로그래머스 - 최대공약수와 최소공배수 문제를 풀었습니다.

 


목차


    Github

     

    GitHub - jeongju9216/SwiftAlgorithm: 스위프트 알고리즘

    스위프트 알고리즘. Contribute to jeongju9216/SwiftAlgorithm development by creating an account on GitHub.

    github.com

     

    문제 링크

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

     

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

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

    programmers.co.kr

     


    풀이

    최소 공배수와 최대 공약수를 구하는 문제입니다.

    lcm과 gcd라고 부르기도 하는데요.

    나머지가 나누어 떨어질 때까지 재귀하는 방식입니다.

     


    전체 코드

    
          
    import Foundation
    func solution(_ n:Int, _ m:Int) -> [Int] {
    return [gcd(n, m), lcm(n, m)]
    }
    func gcd(_ a: Int, _ b: Int) -> Int {
    let maxNum = max(a, b)
    let minNum = min(a, b)
    let remain = maxNum % minNum
    return remain == 0 ? minNum : gcd(minNum, remain)
    }
    func lcm(_ a: Int, _ b: Int) -> Int {
    return a * b / gcd(a, b)
    }
    let n=2, m=5
    print(solution(n, m))

    아직은 초보 개발자입니다.

    더 효율적인 코드 훈수 환영합니다!

    공감 댓글 부탁드립니다.

     

     

    반응형
    유정주