문제
첫 번째 분수의 분자와 분모를 뜻하는 numer1
, denom1
, 두 번째 분수의 분자와 분모를 뜻하는 numer2
, denom2
가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
포인트
분수 덧셈: 두 분수를 더할 때는 각 분수의 분자에 다른 분수의 분모를 곱하고, 그 결과를 더하여 새로운 분자를 구합니다. 분모는 두 분모의 곱으로 계산됩니다.
기약분수로의 간소화: 최대공약수(GCD)를 사용하여 분자와 분모를 나눔으로써 분수를 기약분수 형태로 간소화합니다.
lcm
함수: 최소공배수(LCM)를 계산하는 함수는 파이썬 3.9부터math
모듈에 포함되어 있습니다. 파이썬 3.8에서는 이 함수를 사용할 수 없으므로, 필요한 경우 다른 방법을 사용해야 합니다.파이썬의
math.gcd
함수 사용: 이 함수를 이용하여 두 수의 최대공약수를 구하고, 이를 통해 분수를 간소화합니다.
내 답안
from math import gcd
def solution(numer1, denom1, numer2, denom2):
# 분자와 분모 계산
numer = numer1 * denom2 + numer2 * denom1
denom = denom1 * denom2
# 최대공약수로 기약분수로 변환
greatest_common_divisor = gcd(numer, denom)
numer //= greatest_common_divisor
denom //= greatest_common_divisor
return [numer, denom]
결론 및 느낀점
이 문제를 통해 분수의 덧셈과 간소화 과정을 다루는 방법을 더욱 확실히 이해할 수 있었습니다. 특히, 분수를 기약분수로 변환하는 과정에서 gcd
함수의 활용이 매우 유용했다는 점을 깨달았습니다. lcm
함수의 부재는 파이썬 버전에 따라 사용 가능한 함수가 제한될 수 있음을 보여주며, 이는 프로그래밍에서 환경에 따른 유연성이 필요하다는 것을 강조합니다. 알고리즘 구현 시 수학적 개념을 프로그래밍에 어떻게 적용하는지에 대한 좋은 예시를 제공하고, 문제를 효과적으로 해결하기 위해 주어진 데이터에 대한 정확한 이해가 필수적임을 다시 한번 인지하게 되었습니다.
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Python] 합성수 찾기 (0) | 2025.05.31 |
---|---|
[프로그래머스 / Python] 369게임 (0) | 2025.05.31 |
[프로그래머스 / PCCP 기출문제 3번 / Python] 충돌위험 찾기 (0) | 2025.05.31 |
[프로그래머스 / PCCP 기출문제 2번 / Python] 퍼즐 게임 챌린지 (0) | 2025.05.31 |
[프로그래머스 / PCCP 기출문제 9번 / Python] 지폐 접기 (8) | 2025.05.31 |