본문 바로가기

알고리즘

프로그래머스-최대공약수와 최소공배수

https://programmers.co.kr/learn/courses/30/lessons/12940?language=kotlin 

 

초기코드

class Solution { fun solution(n: Int, m: Int): IntArray { var answer = intArrayOf() return answer } }

 

우선 최대공약수는 gcd 로 Greatest Common Divisor,

최소공배수는 lcm 으로 Least Common Multiple 의 각각의 약자이다.

 

n과 m의 최소공배수는 (n*m)/최대공약수 -> lcm = (n*m)/gcd 이다.

따라서 {gcd,(n*m)/gcd}이다. 그러므로 최대공약수만 구하면 최소공배수도 구할 수 있다.

 

내가 작성한 코드

class Solution {
    fun solution(n: Int, m: Int): IntArray {
        return intArrayOf(gcd(n,m), ((n*m)/gcd(n,m)))
    }
}

-> 결론은 틀림... 그래서 찾아보니 여기에 더 추가 되어야한다...

 

class Solution {
    fun solution(n: Int, m: Int): IntArray {
        return intArrayOf(gcd(n,m), ((n*m)/gcd(n,m)))
    }

    fun gcd(n :Int, m :Int) : Int {
        if (m > n) {
            return if (n == 0) m else gcd(n, m%n)
        } else {
            return if (m == 0) n else gcd(n%m, m)
        }
    }
}

->완성본...if를 좀 더 활용하자...