[Swift] 프로그래머스 N개의

(Swift) 프로그래머 N 최소 공배수(레벨 2)

1. 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12953

프로그램 제작자

코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.

Programmer.co.kr


2. 액세스

두 개의 인수가 아닌 배열로 주어진 최소 공배수를 계산합니다.

루프를 사용하여 최소 공배수를 찾는 논리를 구현할 수 있습니다.

최소 공배수를 찾으려면 최대 공약수를 찾아야 합니다.

두 수의 최소공배수는 두 숫자의 곱 / 최대 공약수 로 찾을 수 있기 때문에

다음은 lcm 및 gcd라는 함수를 사용하여 최소 공배수 및 최대 공약수를 찾는 논리입니다.

arr을 반복하여 최소 공배수를 계산하고 지금까지 얻은 최소 공배수를 tempLcm에 저장하고 계속해서 그 뒤에 나타나는 숫자와 비교하여 최소 공배수를 계산하는 논리가 솔루션에 구현되었습니다.

3. 코드

func solution(_ arr:(Int)) -> Int {
    var tempLcm = 0
    for i in 0 ... arr.count - 1 {
        if i == 0 {
            tempLcm = lcm(arr(i), arr(i + 1))
        } else {
            tempLcm = lcm(arr(i), tempLcm)
        }
    }
    return tempLcm
}

func lcm(_ num1: Int, _ num2: Int) -> Int {
    return (num1 * num2) / gcd(num1, num2)
}

func gcd(_ num1: Int, _ num2: Int) -> Int {
    var divisor = 0
    if num1 > num2 {
        divisor = num1 % num2
        if divisor !
= 0 { return gcd(num2, divisor) } else { return num2 } } else if num1 == num2 { return num1 } else { divisor = num2 % num1 if divisor !
= 0 { return gcd(num1, divisor) } else { return num1 } } }