본문 바로가기

프로그래머스 (Swift)/lv 1

[lv1] 최대공약수와 최소공배수

문제

 

내 정답 코드

func solution(_ n:Int, _ m:Int) -> [Int] {
    return [calDivisor(n, m), calMultiple(n, m)]
}


// 최소공배수 구하기 함수
// 1부터 작은수까지 반복문 돌리고, 각 수의 배수를 배열에 담기
// 배열에 같은 수가 있는 즉시 반환
func calMultiple(_ a: Int, _ b: Int) -> Int {
    var aNums:[Int] = []
    var bNums:[Int] = []
    let maxNum = a > b ? a : b
    
    for i in 1...maxNum {
        aNums.append(a * i)
        bNums.append(b * i)
        
        for num in aNums {
            if bNums.contains(num) {
                return num
            }
        }
    }
    
    return 0
}


// 최대 공약수 구하기 함수
// 1부터 n, m중에 더 큰 수로 반복문 돌리고, 둘 다 나눠떨어지는 수 갱신
// 마지막 수 반환
func calDivisor(_ a: Int, _ b: Int) -> Int {
    var divisor = 1
    let maxNum = a > b ? a : b
    
    for i in 2...maxNum {
        if a % i == 0 && b % i == 0 {
            divisor = i
        }
    }
    
    return divisor
}

 

#

1. 최소공배수와 최대공약수를 구하는 함수를 만들어 해결하였다.

2. 각 함수의 풀이는 주석처리로 대체

3. 최소공배수와 최대공약수를 구하는 함수를 효율적으로 다시 짜봐야겠다.


배운 기술

'프로그래머스 (Swift) > lv 1' 카테고리의 다른 글

제일 작은 수 제거하기  (0) 2024.10.16
[lv1] 문자열 내 마음대로 정렬하기  (1) 2024.10.13
[lv1] 직사각형 별찍기  (0) 2024.10.08
[lv1] 하샤드 수  (0) 2024.10.02
[lv1] 대충 만든 자판  (0) 2024.09.11