[JAVA] 프로그래머스(Q120808) : 분수의 덧셈
in Blog / Algorithm / Level 0 on Algorithm, Programmers, Level-0
안녕하세요, 해을입니다🦖
이번 글에서는 프로그래머스 : 분수의 덧셈 문제에 대해 알아보겠습니다!
💡 문제
코딩테스트 연습 > 코딩테스트 입문 > 분수의 덧셈
💡 문제 설명
첫 번째 분수의 분자와 분모를 뜻하는 numer1
, denom1
, 두 번째 분수의 분자와 분모를 뜻하는 numer2
, denom2
가 매개변수로 주어집니다.
두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.
💡 제한사항
- 0 <
numer1
,denom1
,numer2
,denom2
< 1,000
💡 입출력 예
numer1 | 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] 최대공약수(GCD) / 최소공배수(LCM) 구하는 방법
🚩 소스 코드
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
int numer = denom1 * numer2 + denom2 * numer1;
int denom = denom1 * denom2;
int gcd = getGCD(numer, denom);
return new int[]{numer/gcd, denom/gcd};
}
public int getGCD(int a, int b){
if(a%b == 0) return b;
return getGCD(b, a%b);
}
}
오류 및 오타 등 피드백, 질문, 인사 등 무엇이든 언제나 환영입니다!
읽어주셔서 감사합니다.
끝!🦕