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);
}
}