study gomi

[백준/baekjoon] 1735번 분수 합 (파이썬) 본문

Practice/Baekjoon

[백준/baekjoon] 1735번 분수 합 (파이썬)

공부하곰 2024. 1. 9. 04:38
728x90
반응형

내 제출

- 정답이 맞긴 했는데... 뭔가 지저분하다...

- 유클리드 호제법으로 구하는 게 익숙하지 않다.. for문이 더 편하다.

- for문으로 최대공약수를 구하면 시간 초과가 나온다.

# 기약분수의 분자 a와 분모를 뜻하는 b를 입력 받음
a1, origin_b1 = map(int, input().split())
a2, origin_b2 = map(int, input().split())

b1, b2 = origin_b1, origin_b2

b_multiple = b1*b2

while b2:
    if b1 > b2:
        b1, b2 = b2, b1
    b2 %= b1

# 최소 공배수(lcm) => 이게 두 분수 합의 분모
b_sum = b_multiple // b1

# 두 분자 값의 합
a_sum = a1 * (b_sum//origin_b1) + a2 * (b_sum//origin_b2)

origin_a, origin_b = a_sum, b_sum

while b_sum:
    if a_sum > b_sum:
        a_sum, b_sum = b_sum, a_sum
    b_sum %= a_sum

print(origin_a//a_sum, origin_b//a_sum)

 

결과

728x90
반응형