본문 바로가기
프로그래머스 문제풀이 Java

분수의 덧셈-java

by zkzk7290 2025. 1. 27.
반응형

첫 번째 분수의 분자와 분모를 뜻하는 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