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

YH J·2023년 4월 19일
0

프로그래머스

목록 보기
64/168

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/120808

내 풀이

분자와 분모를 따로 계산해준다. 일단 분모를 서로 곱해서 최소공배수를 만들고 분자들도 같이 곱해준뒤 더해준다. 그 후 공약수를 구해서 나눠준다.

내 코드

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int numer1, int denom1, int numer2, int denom2) {
    vector<int> answer;
    
    numer1 *= denom2;
    numer2 *= denom1;
    
    int a = denom1 * denom2;
    int b = numer1 + numer2;
    
    int i = 2;
    while(i<1000)
    {
        if(a % i == 0 && b % i == 0)
        {
            a /= i;
            b /= i;
        }
        else
            i++;
    }
    answer.push_back(b);
    answer.push_back(a);
    
    
    return answer;
}

다른 사람의 풀이

#include <string>
#include <vector>

using namespace std;

vector<int> solution(int denum1, int num1, int denum2, int num2) {
    vector<int> answer;
    int denum = (denum1 * num2) + (denum2 * num1);
    int num = num1 * num2;

    for(int i = min(denum, num); i >= 2 ; i--)
    {
        if(denum % i == 0 && num % i == 0)
        {
            denum /= i;
            num /= i;
            break;
        }
    }
    answer.push_back(denum);
    answer.push_back(num);

    return answer;
}

다른 사람의 풀이 해석

분자와 분모까진 똑같으나 분자와 분모의 최대공약수를 찾아서 한번만 나눠준다.

profile
게임 개발자 지망생

0개의 댓글