[프로그래머스] 분수의 덧셈 – 자바


프로그래머스 “분수의 덧셈” 문제 해결과정입니다.

분수의 덧셈

문제설명

첫 번째 분수의 분자와 분모를 뜻하는 numer1denom1, 두 번째 분수의 분자와 분모를 뜻하는 numer2denom2가 매개변수로 주어집니다. 두 분수를 더한 값을 기약 분수로 나타냈을 때 분자와 분모를 순서대로 담은 배열을 return 하도록 solution 함수를 완성해보세요.

제한사항

  • 0 <numer1denom1numer2denom2 < 1,000

입출력 예

numer1denom1numer2denom2result
12344
92133

문제 해결과정

프로그래머스 코드

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int n = numer1 * denom2 + numer2 * denom1;
        int d = denom1 * denom2;
        
        int g = (int) IntStream.rangeClosed(1, Math.min(n, d)).filter(i -> n % i == 0 && d % i == 0).max().getAsInt();
        
        return new int[] {n / g, d / g};
    }
}

변수 n에 통분된 분자를, d에는 분모의 곱을 넣는다. g에는 최대공약수를 넣을 건데 IntStream.rangeClosed로 1부터 n,d 중 더 작은 값까지의 수를 추출한다. 추출된 수들 중 filter안에 조건을 만족하는 것들 중 가장 큰 값(max())을 추출한다. 이후 반환할 때 int 배열을 선언하여 분모 분자를 최대공약수로 나눈 값을 반환한다.


댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.