swift N개의 최소공배수

quokka·2021년 8월 10일
0

코딩테스트

목록 보기
31/63

1) 최대공약수를 구하면 최대공배수를 구하기가 쉽다.
최대공배수는 a*b / (a와b의 최대공약수)
2) gcd함수 구현원리 a%b를 했을때 나머지가 0이라면 b가 a,b의 최대 공약수이다. 또 r은 a % b를 했을때 나오는 수 이므로 b는 r보다 항상 크다. 그러므로 r != 0 일때 gcd(a: b, b: r)로 써줘야한다.
3) lcm함수 구현 원리 최대공배수 구하는거와 동일하다.

func solution(_ arr:[Int]) -> Int {
    return arr.reduce(1) { lcm(a: $0, b: $1)}
}

func gcd(a: Int, b: Int) -> Int {
    let r = a%b 
    if r != 0 {
        return gcd(a: b, b: r) 
    } else {
        return b
    }
}

func lcm(a: Int, b: Int) -> Int {
    return a * b / gcd(a: a, b: b) 
}
profile
iOS를 공부하는 개발자입니다~ㅎㅎ

0개의 댓글

관련 채용 정보