ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분수의 덧셈
    코딩 테스트/Level 0 2022. 11. 8. 15:52
    반응형

    https://school.programmers.co.kr/learn/courses/30/lessons/120808

    파이썬

    gcd (최대공약수)

    import math
    
    
    def solution(denum1, num1, denum2, num2):
        denum = denum1 * num2 + denum2 * num1
        num = num1 * num2
        gcd = math.gcd(denum, num)
        return denum // gcd, num // gcd

    여러 결과들을 동시에 리턴할 때 파이썬은 tuple로 묶어서 전송한다.
    프로그래머스의 API는 json을 이용해 답을 확인하기 때문에 튜플과 리스트를 구분하지 않는다.  
    위 코드도 통과되지만 정확하게 작성하는 것이 좋을 것 같다.

     

    fractions(분수) 라이브러리를 이용하면...

    from fractions import Fraction
    
    
    def solution(denum1, num1, denum2, num2):
        result = Fraction(denum1, num1) + Fraction(denum2, num2)
        return result.numerator, result.denominator

     

    코틀린

    class Solution {
        fun solution(numer1: Int, denom1: Int, numer2: Int, denom2: Int): IntArray {
            val answer: IntArray = intArrayOf(numer1 * denom2 + numer2 * denom1, denom1 * denom2)
            var euclid = answer.clone()
            while (euclid[1] > 0) {
                if (euclid[0] >= euclid[1])
                    euclid[0] %= euclid[1]
                euclid = euclid.reversed().toIntArray()
            }
            return answer.map { it / euclid[0] }.toIntArray()
        }
    }
    반응형
Designed by Tistory.