본문 바로가기
[프로그래머스 C++]/LEVEL 0

[프로그래머스 C++] 분수의 덧셈

by AKI(JUNI) 2024. 4. 15.

◈ 문제 설명


◈ 문제 설명 링크
코딩테스트 연습 - 분수의 덧셈 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


◈ 작성 코드

#include <string>
#include <vector>

using namespace std;

int gcd(int a, int b)
{
    if(a % b == 0)
    {
        return b;
    }
    else
    {
        return gcd(b, a % b);   // b / (a % b) == 0 이 될 때까지.
    }
}

vector<int> solution(int numer1, int denom1, int numer2, int denom2) 
{
    vector<int> answer;
    int a = denom1 * denom2;                        // 분모
    int b = (denom1 * numer2 + denom2 * numer1);    // 분자
    
    int c = gcd(a, b);                              // 최대 공약수
    
    a /= c;
    b /= c;
    
    if(a == b)
    {
        answer.push_back(1);
        answer.push_back(1);
    }
    else
    {
        answer.push_back(b);
        answer.push_back(a);
    }
    return answer;
}