[프로그래머스] Lv. 0 - 분수의 덧셈

지윤·2023년 1월 23일
0

프로그래머스

목록 보기
30/69

문제

풀이

function solution(numer1, denom1, numer2, denom2) {
    var answer = [];
    
    //분자
    x = numer1 * denom2 + numer2 * denom1;
    
    //분모
    y = denom1 * denom2;
    
    //분자, 분모 중 작은 수
    min_xy = Math.min(x,y);
    
    //분자, 분모의 최대공약수 찾기
    for (i = min_xy; i >= 1; i--) {
        if (x%i == 0 && y%i == 0) {
            answer.push(x/i, y/i);
            break;
        }
    }
    return answer;
}

최대공약수 찾기가 어려웠던 문제. 먼저 분자, 분모를 구하고 둘 중 작은 수를 1씩 줄여가면서 for문으로 돌린다. 둘 다 나머지가 0이 나오는 수로 약분하면 되겠다고 생각해서 로직을 짰다. 그런데 검색해보니 유클리드 호제법이라는 알고리즘을 이용하더라.. 수학공부 시간이 아니라 패스하지만 코드 효율은 유클리드 호제법을 사용하는게 훨씬 좋다는 것을 알았다. 공부하자!!

profile
방금 태어난 개발자

0개의 댓글