시작하며...
모든 알고리즘 문제 풀이는 제가 직접 짜서 정답을 맞춘 결과만을 공유합니다.
마지막 'More Solution'은 다른 정답자들 풀이 중 생각지 못했던 부분들이나 좋게 느껴진 풀이법 몇개를 가져와서 공유하였습니다.
[Level 0] 분수의 덧셈
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
입출력 예
![](https://blog.kakaocdn.net/dn/bDRusE/btrUM50Ik0k/zPbOtTUSlOOhvVzNMhUF50/img.png)
입출력 예 설명
입출력 예 #1
- 1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
- 9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
My Solution
def gcd(num1, num2):
if (num2 % num1) == 0:
return num1
else:
return gcd(num2, num1 % num2)
def solution(denum1, num1, denum2, num2):
sum_denum = (denum1* num2) + (denum2 * num1)
sum_num = num1 * num2
gcd_num = gcd(sum_denum, sum_num)
return [sum_denum/gcd_num, sum_num/gcd_num]
주어진 두 분수(분자 분모)를 더하고 그 값의 기약분수값을 리턴해야 하는 문제이다.
기약분수를 구하기 위해 최대공약수를 구하는 메서드를 이용하였다.
최대공약수 메서드 gcd는 유클리디안 호제법을 이용하였으며 이전에 만들었던 메서드를 가져와서 사용하였다.
- 기약분수를 구하는 함수 gcd 정의
- 두 분모들을 곱하여 공통분모로 사용
- 각 분자들에 다른 분모를 곱하여 통분하고 더하기
- 더해진 분수 (sum_denum / sum_num) 의 분자 분모의 최대공약수를 구하여 나눠준다 -> 기약분수
'Algorithm > Programmers' 카테고리의 다른 글
[Algorithm] 프로그래머스 - 예산 (1) | 2022.12.28 |
---|---|
[Algorithm] 프로그래머스 - 3진법 뒤집기 (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 완주하지 못한 선수 (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 이상한 문자 만들기 (0) | 2022.12.28 |
[Algorithm] 프로그래머스 - 부족한 금액 계산하기 (1) | 2022.12.28 |
댓글