반응형
문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1, 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
- 0 <denum1, num1, denum2, num2 < 1,000
입출력 예
denum1 | num1 | denum2 | num2 | result |
1 | 2 | 3 | 4 | [5, 4] |
9 | 2 | 1 | 3 | [29, 6] |
소스코드
Solution.c
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
int* solution(int denum1, int num1, int denum2, int num2) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
int* answer = (int*)malloc(1);
int a = denum1 * num2 + denum2 * num1;
int b = num1 * num2;
int c = 1;
for(int i= 1 ; i <= a ; i ++) {
if(a%i == 0 && b%i == 0) {
c = i;
}
}
answer[0]= a/c;
answer[1]= b/c;
return answer;
}
풀이
for 문을 이용하여 두 분수에 대해 최대공약수를 찾은 다음 그만큼 나누어 계산한 값을 넣어주었다.
이는 정리된 수학식을 이용하여 코드로 바꾼것이다.
한마디
시험기간이라 어제는 못했는데 시험기간이라는 특별한 일 외에는 열심히하자. 아자.
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr