문제

https://leetcode.com/problems/find-greatest-common-divisor-of-array

풀이

수열 nums의 원소 중 가장 큰 원소의 가장 작은 원소의 GCD를 리턴하면 된다.

처음에 max()min()을 썼는데, 제출 시간이 거의 최하위권이길래 for loop로 다시 작성했다.

GCD 자체는 유클리드 호제법을 이용해서 구한다.

코드

class Solution {
    func findGCD(_ nums: [Int]) -> Int {
        func gcd(_ a: Int, _ b: Int) -> Int { 
            b == 0 ? a : gcd(b, a % b)
        }
        var min = Int.max
        var max = 0
        for num in nums {
            min = min > num ? num : min
            max = max < num ? num : max
        }
        return gcd(min, max)
    }
}