반응형
첫 번째 분수의 분자와 분모를 뜻하는 numer1, denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2, denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해 보세요.
제한사항
0 <numer1, denom1, numer2, denom2 < 1,000
입출력 예 #1
1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.
입출력 예 #2
9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.
i <= number && i <= denom 이렇게 범위를 설정한 이유?? => 분모 분자 둘 중에 누가 더 큰 값이 나올지 몰라서 이렇게 설정하면 무조건 작은 값의 범위 내에서 작동함
if(number % i == 0 && denom% i==0){ max =i; } => 이 조건식은 두수 관에 최대 공약수를 구하기 위한 조건식이다.
그래서 최대 공약수를 구한고 number, denom에 나누기하면 원하는 분수 연산값이 나온다.
굳이 배열을 사용안하고 list도 사용가능하다.
class Solution {
public int[] solution(int numer1, int denom1, int numer2, int denom2) {
//분자를 더하기 연산 한것
int number = numer1* denom2 + numer2 * denom1;
//분모 더하기 연산한것
int denom = denom2 * denom1;
// 최대 공약수를 가지고 변수
int max = 1;
//
for(int i =1; i<= number && i<= denom; i++){
if(number %i == 0 && denom% i==0){
max =i;
}
}
number /=max;
denom /=max;
int[] answer = {number,denom};
return answer;
}
}
반응형
'프로그래머스 문제풀이 Java' 카테고리의 다른 글
자연수 뒤집어 배열로 만들기 풀이 (0) | 2024.09.05 |
---|---|
Level -2016 (0) | 2024.08.31 |
삼각형의 완성 조건(2) (0) | 2024.08.17 |