[TIL] Fraction Addition in Swift

Eden·2024년 11월 17일
1

TIL

목록 보기
44/92
post-thumbnail

오늘은 두 분수를 더하고 그 결과를 기약 분수 형태로 반환하는 문제를 풀었다. 이 문제는 주어진 두 분수의 분자(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]
}

문제 해결 과정

  1. 분모 통일 및 분자 계산

    • 두 분수를 더하기 위해서는 분모를 같게 만들어야 한다. 이를 위해 첫 번째 분수의 분자와 두 번째 분수의 분자를 각각 상대 분수의 분모로 곱한 후 더했다.
    • 새로운 분자(newNumer)와 분모(newDenom)를 계산하였다.
  2. 최대공약수(GCD) 구하기

    • 계산한 분자와 분모를 기약 분수로 나타내기 위해서는 두 수의 최대공약수를 구해야 한다. 이를 위해 유클리드 호제법을 사용하여 최대공약수(GCD)를 구했다.
  3. 기약 분수로 변환

    • 분자와 분모를 최대공약수로 나누어 기약 분수 형태로 변환했다.

배운 점

  • 유클리드 호제법을 사용하여 최대공약수를 구하는 방법을 복습했다. 두 수의 나머지를 반복적으로 계산하여 최대공약수를 구할 수 있다는 점이 유용하다.

  • 분수 계산에서 분모를 통일한 후 더하는 기본적인 수학적 원리를 Swift로 구현했다. 이를 통해 수학적 문제를 코드로 변환하는 과정을 더 명확히 이해하게 되었다.

이 과정을 통해 분수의 덧셈을 계산하고, 그 결과를 기약 분수로 만드는 방법을 완벽하게 이해했다. 오늘 배운 내용을 기반으로, 분수를 다루는 다른 문제들도 풀어볼 예정이다.

profile
Frontend🌐 and iOS

0개의 댓글