포스트

199. 최대공약수와 최소공배수


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
func solution(_ n:Int, _ m:Int) -> [Int] {

    var N = n
    var M = m

    var arr : [Int] = []
    var gcd : Int = 0
    var lcm : Int = 0

    var temp : Int = 0


    if N < M {
        temp = N
        N = M
        M = temp
    }

    while M != 0 {
        temp = N%M
        N=M
        M=temp
    }

    gcd = N

    lcm = gcd == 1 ? n * m : (n/gcd) * (m/gcd) * gcd

    arr.append(gcd)
    arr.append(lcm)

    return arr
}

최대공약수 최소공배수를 너무 오래간만에 해서 숫자를 보면 바로 계산이 되었지만 이걸 어떻게 코드로 풀어나가야할지 고민이 많이 되었다.

그래서 최대공약수를 어떻게 구하는지를 먼저 찾아보고 그것을 코드로 구현을 했다.

코드로 구현을 하고나서 찾아보니 내가 한방식이 틀리지 않았다는걸 알았지만, 한편으로는 뭔가 더 간편하게 할수있는 방법이 있지않을까라는 생각을 좀 하게된다.

최소공배수는 직접 계산을 해보고 그에 따른걸 코드로 표현을 하였고 그리고 삼항연산자로 표현이 가능할 것 같아 이렇게 표현을 하게되었다.

뭔가 풀고나서도 조금 찝찝한 문제로 느껴진다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.