1/10 TIL

taetae·2023년 1월 10일
0

내배캠 TIL

목록 보기
32/48
post-custom-banner

▶ 어떤 문제가 있었는지

그냥 이 문제를 어떻게 푸는지 몰랐다

▶ 내가 시도해본 것들

단순하게 분수 덧셈 공식으로 풀어보려고 했으나 답이 나오지 않았다.

▶ 어떻게 해결 했는지

켐프 대원분께 질문을 하니 최소공배수를 통해 답을 구해야한다고 알려주셨다.
해결한 코드 !

function solution(numer1, denom1, numer2, denom2) {
    numer1 *= denom2;
    numer2 *= denom1;
    let resultNumer = numer1 + numer2;
    let resultDenom = denom1 * denom2;
    // 최소 공배수를 구하는 식
    let getGCD = (num1, num2) => {
        let gcd = 1;
        
        for (let i = 2; i <= Math.min(num1, num2); i++) { // i가 2부터 시작하고 num1과 num2 중 최소값까지 반복
            if(num1 % i === 0 && num2 % i === 0){ // num1 과 num2가 i로 나눴을 때 0으로 같이 떨어지면
                gcd = i;
            }
        }
        return gcd;
    }
    gcd = getGCD(resultNumer, resultDenom);
    resultNumer = resultNumer / gcd;
    resultDenom /= gcd;
    return [resultNumer, resultDenom];
}

▶ 새롭게 알게된 것

최소공배수를 구하는 코드양식과 코테를 풀 때는 어느 정도 수학적 지식도 필요하고 필요한 코드 공식 정도는 외워야 하는 거 같다.

post-custom-banner

0개의 댓글