본문 바로가기
프로그래머스코딩테스트연습풀이/C언어

[프로그래머스/C언어] 분수의 덧셈

by 코코쵸마 2023. 8. 4.

문제

첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

 

솔루션

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int* solution(int numer1, int denom1, int numer2, int denom2) {
    // return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
    int* answer = (int*)malloc(2*sizeof(int));
    answer[0] = numer1*denom2+numer2*denom1;
    answer[1] = denom1*denom2;
    for(int i = answer[0]; i >= 2; i--)
        if(answer[0] % i == 0 && answer[1] % i == 0)
        {
            answer[0] /= i;
            answer[1] /= i;
        }
    return answer;
}

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