반응형
안녕하세요. 개발 중인 정주입니다.
오늘은 프로그래머스 - 최대공약수와 최소공배수 문제를 풀었습니다.
목차
Github
문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12940
풀이
최소 공배수와 최대 공약수를 구하는 문제입니다.
lcm과 gcd라고 부르기도 하는데요.
나머지가 나누어 떨어질 때까지 재귀하는 방식입니다.
전체 코드
import Foundation
func solution(_ n:Int, _ m:Int) -> [Int] {
return [gcd(n, m), lcm(n, m)]
}
func gcd(_ a: Int, _ b: Int) -> Int {
let maxNum = max(a, b)
let minNum = min(a, b)
let remain = maxNum % minNum
return remain == 0 ? minNum : gcd(minNum, remain)
}
func lcm(_ a: Int, _ b: Int) -> Int {
return a * b / gcd(a, b)
}
let n=2, m=5
print(solution(n, m))
아직은 초보 개발자입니다.
더 효율적인 코드 훈수 환영합니다!
공감과 댓글 부탁드립니다.
반응형