Notice
Recent Posts
Recent Comments
Link
On a couch
[프로그래머스 Lv.0] 분수의 덧셈 본문
문제
더보기
제한사항
입출력 예denum1num1denum2num2result
입출력 예 설명
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
입출력 예denum1num1denum2num2result
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 합니다.
코드
최대공약수 개념이 필요해서 유클리드 호제법을 다시 검색해서 풀었다.
배울 때는 while 문을 이용해서 긴 재귀함수를 작성했는데, 줄이다보면 화살표함수 한 줄로도 표현이 가능하다!
function solution(denum1, num1, denum2, num2) {
const denum3 = (denum1*num2 + denum2*num1)
const num3 = (num1 * num2)
const GCD = (a, b) => (a % b === 0) ? b : GCD(b , a % b)
const gcd = denum3 >= num3 ? GCD(denum3, num3) : GCD(num3, denum3)
var answer = [denum3/gcd, num3/gcd];
return answer;
}
'혼자 발버둥 > 코딩테스트 준비' 카테고리의 다른 글
[프로그래머스 Lv.1] 성격 유형 검사 (0) | 2022.10.24 |
---|---|
[프로그래머스 Lv.0] 최빈값 구하기 (0) | 2022.10.24 |
[프로그래머스 Lv.1] 비밀지도 (1) | 2022.10.21 |
[프로그래머스 Lv.1] 신고 결과 받기 (0) | 2022.10.20 |