오늘은 두 분수를 더하고 그 결과를 기약 분수 형태로 반환하는 문제를 풀었다. 이 문제는 주어진 두 분수의 분자(numer1, numer2)와 분모(denom1, denom2)를 입력받아, 두 분수를 더한 후 기약 분수로 나타내어야 했다. 문제를 해결하면서 배우고 정리한 내용을 공유한다.
import Foundation
func solution(_ numer1:Int, _ denom1:Int, _ numer2:Int, _ denom2:Int) -> [Int] {
// 분모 통일 후 분자 계산
var newNumer = numer1 * denom2 + numer2 * denom1
var newDenom = denom1 * denom2
// 최대공약수 구하기 (유클리드 호제법)
var a = newNumer
var b = newDenom
while b != 0 {
let remainder = a % b
a = b
b = remainder
}
let gcdValue = a
// 기약 분수로 나타내기
let finalNumer = newNumer / gcdValue
let finalDenom = newDenom / gcdValue
return [finalNumer, finalDenom]
}
분모 통일 및 분자 계산
최대공약수(GCD) 구하기
기약 분수로 변환
유클리드 호제법을 사용하여 최대공약수를 구하는 방법을 복습했다. 두 수의 나머지를 반복적으로 계산하여 최대공약수를 구할 수 있다는 점이 유용하다.
분수 계산에서 분모를 통일한 후 더하는 기본적인 수학적 원리를 Swift로 구현했다. 이를 통해 수학적 문제를 코드로 변환하는 과정을 더 명확히 이해하게 되었다.
이 과정을 통해 분수의 덧셈을 계산하고, 그 결과를 기약 분수로 만드는 방법을 완벽하게 이해했다. 오늘 배운 내용을 기반으로, 분수를 다루는 다른 문제들도 풀어볼 예정이다.