Algorithm Problem Solving/Programmers

[프로그래머스] 연습문제 N개의 최소공배수 with Swift

코코자장자장 2021. 12. 8. 09:57

안녕하세요! 오늘은 N개의 최소공배수 문제를 풀어보았습니다!

 

참... 문제가 이상하다고 많이 느낀 문제였는데요!

 

풀고나서도 찝찝하네요!

 

우선 같이 풀어보시죠!

 

N개의 최소공배수

 

각자 다 소수로 나눠서 그 갯수로 문제를 풀었다가 연습문제만 맞고 테스트 코드에서 틀려버려서 풀이 방법을 바꾸었습니다.

 

두개씩 최소공배수를 구하고 그 수로 다음수와 또 최소공배수를 구하는 방식으로 문제를 풀었습니다!

 

그러기 위해서는 최대공약수를 구하고 두수를 곱한다음 최대공약수로 나누면 서로의 최소 공배수가 구해지는 방법을 이용하였습니다!

 

이렇게 두개씩 최대공약수를 구해 마지막 배열에 저장하고 반환하면 문제가 해결됩니다!

func solution(_ arr:[Int]) -> Int {
    var resultArr = arr
    var result = 1
    var count = resultArr.count
    
    for i in 1..<count {
        let minNumber = resultArr[i-1] < resultArr[i] ? resultArr[i-1] : resultArr[i]
        var gcd = 1
        for j in 1...minNumber {
            if (resultArr[i-1]%j == 0 && resultArr[i]%j == 0 ){
                gcd = j
            }
        }
        resultArr[i] = resultArr[i-1] * resultArr[i] / gcd
    }
    
    print(resultArr)
    return resultArr[count-1]
}

 

오늘도 포스팅을 봐주셔서 감사하고

 

좋은 하루 되시길 바랍니다!