728x90
반응형
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
제한사항
0 <numer1, denom1, numer2, denom2 < 1,000
입출력 예
umer1 denom1 numer2 denom2 result
1 2 3 4 [5, 4]
9 2 1 3 [29, 6]
입출력 예 설명
입출력 예 #1
1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
내 풀이
[Java]
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//int[] answer = {};
int p = denom1 * denom2;
int c = numer1 * denom2 + numer2 * denom1;
int max = 0;
for(int i = 1; i <= p && i <= c; i++){
if(p % i == 0 && c % i == 0){
max = i;
}
}
int[] answer = {c/max, p/max};
return answer;
}
}
[C]
#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(1);
int p = denom1 * denom2;
int c = numer1 * denom2 + numer2 * denom1;
int max = 0;
for(int i = 1; i <= p && i <= c; i++){
if(p % i == 0 && c % i == 0){
max = i;
}
}
answer[0] = c / max;
answer[1] = p / max;
return answer;
}
[Python]
import math
def solution(numer1, denom1, numer2, denom2):
answer = []
p = denom1 * denom2
c = numer1 * denom2 + numer2 * denom1
m = math.gcd(p, c)
answer = [c / m, p / m]
return answer
https://school.programmers.co.kr/learn/courses/30/lessons/120808
728x90
반응형
'코딩테스트 > 프로그래머스 입문' 카테고리의 다른 글
[코딩테스트 Lv.0] 나머지 구하기 (0) | 2023.12.19 |
---|---|
[코딩테스트 Lv.0] 배열 두배 만들기 (0) | 2023.12.15 |
[코딩테스트 Lv.0] 머쓱이보다 키 큰 사람 (0) | 2023.12.11 |
[코딩테스트 Lv.0] 중복된 숫자 개수 (0) | 2023.12.10 |
[코딩테스트 Lv.0] 두 수의 나눗셈 (0) | 2023.12.08 |