본문 바로가기

프로그래밍/알고리즘 (JAVA)

[JAVA] 프로그래머스 LEVEL0 분수의 덧셈 / 최대공약수 활용 | 정답률 33.3% 나오는 경우 필독

진짜 진짜 너무 간단한 문제.

최대공약수 구하는 법만 안다면 문제를 풀 수 있고 최대공약수 구하는 법은 공식이 간단하니 그냥 함수를 통으로 외웠다.

 

public int gcd(int a, int b){
    if( a % b == 0) return b;
    return gcd(b, a % b);
}

최대공약수를 재귀와 반복문을 통해 풀 수 있다고 하는데 재귀가 더 간단해서 그냥 재귀로 외워버림

 

 

 

근데 왜 통과 못하고 33.3 퍼만 나올까 ㅠ 해결책은 진짜 간단스 했다...

최대공약수 구하는 부분에서 분모의 최대공약수가 아니라 분자, 분모 통 틀어서 최대 공약수를 구해줘야 함...

약분이 될 수 있다는 경우의 수까지 생각해줘야 했다.

 

 

 

 

전체 코드

public int[] solution(int numer1, int denom1, int numer2, int denom2) {
    int[] answer = new int[2];

    int boonja = numer1 * denom2 + numer2 * denom1;
    int boonmo = denom1 * denom2;

    int gcd = gcd(boonja, boonmo);

    answer[0] = boonja / gcd;
    answer[1] = boonmo / gcd;

    System.out.println(answer[0] + " " + answer[1]);
    System.out.println("gcd :" + gcd);

    return answer;
}

// 최대공약수
public int gcd(int a, int b){
    if( a % b == 0) return b;
    return gcd(b, a % b);
}