코딩 테스트/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()
}
}
반응형