| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코딩테스트
- 모던 자바스크립트 딥 다이브
- styled-components
- 메가바이트스쿨
- 이벤트
- GIT
- 공식문서
- 자바스크립트
- 자료구조
- CSS
- TypeScript
- 입문
- 프로그래머스
- next.js
- 알고리즘
- useMemo
- useRef
- 프론트엔드
- 개발 공부
- 리액트
- 내일배움카드
- react
- MegabyteSchool
- JavaScript
- 패스트캠퍼스
- 모던 딥 다이브 자바스크립트
- 국비지원교육
- Github
- 개발자취업부트캠프
- 비전공자
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 분수의 덧셈 본문
🗒️ 문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
⚠️ 제한 사항
- 0 <denum1, num1, denum2, num2 < 1,000
👀 입출력 예
| denum1 | num1 | denum2 | num2 | result |
| 1 | 2 | 3 | 4 | [5, 4] |
| 9 | 2 | 1 | 3 | [29, 6] |
❇️ 나의 풀이
- 분모가 다른 분수를 덧셈하려면 먼저 분모의 최소공배수를 구해야 한다. while문을 이용해서 1씩 더해가면서 num1, num2로 나눴을 때 나머지가 0인 값을 구한다. 찾으면 break로 그 즉시 반복문을 빠져나간다.
- num1과 num2가 최소공배수가 되기 위해 곱해야 할 값을 각각 구한다.
- 분자에 그 값을 각각 곱한 뒤 더해주면 분수 덧셈 시 분자의 값이 된다.
- 기약분수를 반환해야 하므로 분자와 분모가 공약수를 가지고 있는지 확인하고, 그 값으로 나눠준 값을 배열로 반환한다.
function solution(denum1, num1, denum2, num2) {
// num1과 num2의 최소공배수 구하기
let lcm = 1;
while(true){
if((lcm % num1 == 0) && (lcm % num2 == 0)){
break;
}
lcm++;
}
// denum1과 denum2에 곱할 값 구하기
let x1 = lcm / num1;
let x2 = lcm / num2;
// 분자 더한 값
let a1 = (denum1 * x1) + (denum2 * x2);
// a1과 lcm의 약수 확인해서 기약분수화 하기
let gcd = 1;
for(let i=1; i<=Math.min(a1, lcm); i++){
if(a1 % i === 0 && lcm % i === 0){
gcd = i;
}
}
return [a1/gcd, lcm/gcd]
}'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 문자열 밀기 (0) | 2023.01.02 |
|---|---|
| [프로그래머스] 등수 매기기 (0) | 2022.12.31 |
| [프로그래머스] 연속된 수의 합 (0) | 2022.12.31 |
| [프로그래머스] 영어가 싫어요 (0) | 2022.12.30 |
| [프로그래머스] 컨트롤 제트 (0) | 2022.12.30 |