Coding Test

[Coding Test] 프로그래머스 0단계 - 분수의 덧셈

한비Skyla 2024. 7. 25. 19:48

📚 문제

 

✏️ 메모 1

1. 분모를 통일해야 

 

2. 분자에 곱해 줘야 되는데. 

분모 자체가 최소공배수 이면, 안 곱해줘도 됨. 

 

3. 분자 더하기

곱한 최종적인 분자 2개를 더해서 

분자 결과값에 할당. 

 

>>> 생각보다 로직이 복잡해짐. 

두 분모 중에 어떤 수가 더 큰지도 비교해야 되고,

같은 경우도 나눠야 되고, 

분자를 또 곱해야되는데,.......

좀 더 효율적인 방법이 없나.

 

✏️ 메모 2

약분을 하자!

 

1. 서로의 분모와 분자를 곱하고, 

2. 나온 값을

3. 두 분모의 최대공약수로 나누면

4. 약분이 된다. 

💡유클리드 호제법 

 

[Algorithm]최대공약수 & 최소공배수 - Java

[알고리즘] 최대공약수 & 최소공배수 - Java 로 구현하기 많은 사람들이 코딩테스트 문제를 풀다보면 접하게 되는 최대공약수 & 최소공배수 구하기 이다. 학생 시절에 배웠던것이라 기억이 나는

lucas-owner.tistory.com

 

🔎 문제해결

문제해결 시간: 2시간 이상, 레퍼런스 참고.

class Solution {
    public int[] solution(int numer1, int denom1, int numer2, int denom2) {
        int numer = numer1 * denom2 + numer2 * denom1;
        int denom = denom1 * denom2;
        
        // 약분하는 방법. 최대공약수를 구해서 나누면 됨.
        int gcd = gcd(numer, denom);
        
        int divNumer = numer / gcd;
        int divDenom = denom / gcd;
        int[] answer = {divNumer, divDenom};
        return answer;
        
    }
    
    public static int gcd(int a, int b) {
    if (b == 0) {return a;}
    return gcd(b, a % b);
    }   
}