[CodingTest] 분수의 덧셈

hye·2023년 3월 7일
0

AlgorithmTest

목록 보기
36/95

📖 Exam

문제 설명

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

제한 조건

  • 0 <numer1, denom1, numer2, denom2 < 1,000

입출력 예

numer1denom1numer2denom2result
1234[5, 4]
9213[29, 6]
  • 입출력 예 #1
    1 / 2 + 3 / 4 = 5 / 4입니다. 따라서 [5, 4]를 return 합니다.

  • 입출력 예 #2
    9 / 2 + 1 / 3 = 29 / 6입니다. 따라서 [29, 6]을 return 합니다.


✍ Answer

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {

        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;

        int num = 0;

        for(int i = 1; i<=denom;i++){
            if(numer%i==0 && denom%i==0) num = i;
        }

        return  new int[]{numer/num,denom/num};
    }
}

💡 Realization

  • 아니 이게 왜 기본 문제... 0레벨 2일차 문제지?
    나눌 수 있는 수 구하는건 결국 힌트 보고 풀었다. 이제까지 문제 풀면서 최초로 힌트 봄.

  • 마지막 계산에서 못했던 부분이 분모와 분자를 최대공약수로 나눠야했는데 이 최대공약수 구하는 방법을 어떻게 해야할까, 0레벨에서 할 수 있는 간단한 방법이 있나? 한참 멍때리게 되었었다.

https://school.programmers.co.kr/learn/courses/30/lessons/120808/solution_groups?language=java

profile
Junior Backend Developer

0개의 댓글