inblog logo
|
moohyun
    알고리즘문제풀기

    분수의 덧셈

    난이도 중하
    화낼거양's avatar
    화낼거양
    Mar 21, 2025
    분수의 덧셈
    Contents
    정답
     
    출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120808
     

    문제 설명

    첫 번째 분수의 분자와 분모를 뜻하는 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 합니다.
     
     
    기본적으로 주어진 코드 :
    class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int[] answer = {}; return answer; } }
     
     

    정답

     
    class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int[] answer = new int[2]; int boonMo = denom1 * denom2; int boonZa = (numer1 * denom2) + (numer2 * denom1); // 최대 공약수를 구해야 함 int i = 2; int measure = -1; int target = boonMo > boonZa ? boonZa : boonMo; while (i <= target) { if (boonMo % i == 0 && boonZa % i == 0) { measure = i; } i++; } if (measure == -1) { answer[0] = boonZa; answer[1] = boonMo; } else { answer[0] = boonZa / measure; answer[1] = boonMo / measure; } return answer; } }
     
    • 최대 공약수를 찾아 활용하는 것이 핵심
    Share article
    Contents
    정답

    moohyun

    RSS·Powered by Inblog