
진짜 진짜 너무 간단한 문제.
최대공약수 구하는 법만 안다면 문제를 풀 수 있고 최대공약수 구하는 법은 공식이 간단하니 그냥 함수를 통으로 외웠다.
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);
}
'프로그래밍 > 알고리즘 (JAVA)' 카테고리의 다른 글
[JAVA] 프로그래머스 LEVEL2 멀리 뛰기 / 피보나치수열 활용 (0) | 2023.03.22 |
---|---|
[JAVA] 프로그래머스 LEVEL2 다음 큰 숫자 / Java BitCount를 활용하여 문제풀이 (0) | 2023.02.24 |
[JAVA] 프로그래머스 LEVEL2 피보나치 수 (0) | 2022.10.05 |
[JAVA] 프로그래머스 LEVEL2 숫자의 표현 (1) | 2022.10.05 |
[JAVA] 백준 알고리즘 9012번 - 괄호 (Stack 활용) (0) | 2021.10.20 |