분수의 덧셈은 어떻게 할까? 분모와 분자를 나눠서 생각해야하나? 하면서 미뤄왔던 문제였다.
처음은 내 생각만으로 풀고자하여 관련 내장함수 없이 풀어보았다.
로직은 아래와 같다.
1. 분자의 최소공배수 구하기
2. 최소공배수를 이용해 분수 더하기
3. 약분하기
function solution(numer1, denom1, numer2, denom2) {
answer = []
let lcm = 1;
while(true){
if((lcm % denom1 == 0) && (lcm % denom2 == 0)){
var numer3 = lcm/denom1*numer1+ lcm/denom2*numer2;
var denom3 = lcm;
for (var k = Math.min(numer3,denom3); k>1;k--){ //약분
if(numer3%k==0&&denom3%k==0){
numer3=numer3/k;
denom3=denom3/k;
}
}
answer.push(numer3);
answer.push(denom3);
break;
}
lcm++;
}
return answer;
}
function solution(numer1, denom1, numer2, denom2) {
var answer = [];
for (var i = 1; i<=denom1;i++){ //denom2와 곱해지는 경우
for (var j=1;j<=denom2;j++){ //denom1과 곱해지는 경우
if(denom1*j==denom2*i){//최소공배수 구하기
var numer3 = numer1*j+numer2*i;
var denom3 = denom1*j;
for (var k = Math.min(numer3,denom3); k>1;k--){ //약분
if(numer3%k==0&&denom3%k==0){
numer3=numer3/k;
denom3=denom3/k;
}
}
answer.push(numer3);
answer.push(denom3);
return answer;
}
}
}
}
두가지 방법으로 풀어보았는데 처음 방법이 좀 더 나은 것 같다!
자바 스크립트 함수를 모르고 그냥 풀기에는 프로그래머스 2일차 치고는 생각을 꽤 해야하는 문제인 것 같다. 다른 언어를 배웠다면 생각하기 어렵지 않겠지만 언어가 처음인 사람은 어려울 것 같다.
'자바스크립트' 카테고리의 다른 글
[javascript] 반올림, 올림, 내림, Math.round, Math.ceil , Math.floor - 피자 나눠먹기(1) - 프로그래머스 (0) | 2023.07.07 |
---|---|
[javascript]fillter - 각도기(프로그래머스) (0) | 2023.07.06 |
[javascript]배열관리 push, unshift, splice, pop, shift, splice - n이하 짝수 (0) | 2023.07.06 |
[javascript] 최빈값 구하기 (2) | 2023.07.06 |
[javascript] sort함수 - 중앙값 구하기 (0) | 2023.07.05 |