[ 문제 ]
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
[ 제한사항 ]
- 0 <numer1, denom1, numer2, denom2 < 1,000
[ 입출력 예 ]
numer1 | denom1 | numer2 | denom2 | result |
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
< 입출력 예 #1 >
- 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
< 입출력 예 #2 >
- 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
[ 해결 방법 ]
1. 통분 후의 분자, 분모 값을 담은 리스트 answer 선언
2. 최대 공약수를 담을 변수 max_num에 1을 할당하면서 선언
3. 2부터 answer 중에 가장 큰 값까지 반복
4. 만약 분자와 분모에 둘 다 나눴을 때 나머지가 0일 경우 max_num에 값 할당
5. 반복이 모두 끝나면 answer의 각 요소를 max_num으로 나눈 값을 할당
6. 반복이 모두 끝나면 분자와 분모를 담은 리스트 answer 반환
[ solution.py ]
def solution(numer1, denom1, numer2, denom2):
answer = [numer1 * denom2 + numer2 * denom1, denom1 * denom2]
max_num = 1
for i in range(2, max(answer) + 1):
if answer[0] % i == 0 and answer[1] % i == 0:
max_num = i
for i in range(len(answer)):
answer[i] /= max_num
return answer
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[PROGRAMMERS] 달리기 경주 (LV. 1) - Python (1) | 2024.06.08 |
---|---|
[PROGRAMMERS] 평행 (LV. 0) - Python (0) | 2024.05.02 |
[PROGRAMMERS] OX퀴즈 (LV. 0) - Python (0) | 2024.05.02 |
[PROGRAMMERS] 최빈값 구하기 (LV. 0) -Python (0) | 2024.05.02 |
[PROGRAMMERS] 다항식 더하기 (LV. 0) - Python (0) | 2024.05.02 |