코딩테스트/프로그래머스

[SWIFT] 분수의 덧셈

clamp 2022. 10. 19. 14:20

첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

입출력 예

접근법 -

분모들의 곱을 분모로하는 최대의 분모와 분자를 찾아서 최대공약수로 나눈다.

모든 수의 최대공약수는 1부터 시작하며 그 위로 있을수도, 없을수도 있다.

 

func solution(_ denum1: Int, _ num1: Int, _ denum2: Int, _ num2: Int) -> [Int]{
	//최대로 나오는 분자
	let maxdenum = num1 * denum2 + num2 * denum1
    //최대로 나오는 분모
    let maxnum = num1 * num2
    var minx = 1
    //약분
    for i in 1...maxdenum{
    	if(maxdenum % i == 0 && maxnum % i == 0){
        	minx = i
            }
     }
     return [maxdenum / minx, maxnum / minx]
}