Archive/Questions

[programmers/Swift] 최대공약수와 최소공배수

Marco 2022. 4. 27. 09:29
728x90

programmers.co.kr - 코딩테스트연습 - Lv.1 - 연습문제 - 최대공약수와 최소공배수

 

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

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

programmers.co.kr


Constraints :

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

 

Solution.swift :

//
//  Created by Yongwoo Marco on 2022/04/23.
//  Copyright © 2022 Yongwoo Marco Kim. All rights reserved.
//

// 최대공약수
func GCD(_ min: Int, _ max: Int) -> Int {
    return min % max == 0 ? max : GCD(max, min % max)
}
// 최소공배수
func LCM(_ a: Int, _ b:Int) -> Int {
    return a * b / GCD(a,b)
}

func solution(_ n:Int, _ m:Int) -> [Int] {
    return [GCD(n, m), LCM(n, m)]
}

print(solution(3, 12)) // [3, 12]
print(solution(2, 5)) // [1, 10]

How I tried this :
최대공약수(GCD) 의 재귀적 정의를 이용

최소공배수(LCM) 는 두 수 (a' * GCD, b' * GCD) 의 곱에서 GCD를 나누어 줌

 

문제에 관한 모든 저작권 : https://programmers.co.kr/

728x90