/* 분수의 덧셈
* 첫 번째 분수의 분자와 분모를 뜻하는 denum1, num1,
* 두 번째 분수의 분자와 분모를 뜻하는 denum2, num2가 매개변수로 주어집니다.
* 두 분수를 더한 값을 기약 분수로 나타냈을 때
* 분자와 분모를 순서대로 담은 배열을 return
*
* denum1 num1 denum2 num2 result
* 1 2 3 4 [5, 4] 1/2 + 3/4 = 5/4입니다. 따라서 [5, 4]를 return
* 9 2 1 3 [29, 6] 9/2 + 1/3 = 29/6입니다. 따라서 [29, 6]을 return
*
* 최소공배수 : (a ✕ b) / (최대공약수)
*/
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | import java.util.*; public class programmer_0_29 { static int a1 = 512; static int c1 = 512; static int b1 = 512; static int d1 = 512; static int a2 = 9; static int c2 = 1; static int b2 = 2; static int d2 = 3; public int getNum(int num1, int num2){ int rst = 0; ArrayList ar1 = new ArrayList<>(); ArrayList ar2 = new ArrayList<>(); for(int i = 1; i <= num1; i++){ if(num1 % i == 0){ ar1.add(i); } } for(int i = 1; i <= num2; i++){ if(num2 % i == 0){ ar2.add(i); } } for(int i = 0; i < ar1.size(); i++){ for(int k = 0; k < ar2.size(); k++){ if(ar1.get(i).equals(ar2.get(k))){ rst = (int) ar1.get(i); break; } } } return rst; } public int getCal(int max, int n){ if(n == max) return 1; else return max/n; } public int[] solution(int denum1, int num1, int denum2, int num2) { int[] answer = new int[2]; //다른 사람 더 간단한 풀이법 answer[0] = denum1*num2 + denum2*num1; answer[1] = num1*num2; int min = (answer[0] > answer[1])? answer[0]: answer[1]; int gcd = 0; for (int i = 1; i <= min; i++) { if (answer[0] % i == 0 && answer[1] % i == 0) gcd = i; } answer[0] = answer[0]/gcd; answer[1] = answer[1]/gcd; /* int max = getNum(num1, num2); //최대공약수 int min = num1 * num2 / max; //최소공배수 answer[0] = (denum1 * getCal(min, num1)) + (denum2 * getCal(min, num2)); answer[1] = min; max = getNum(answer[0], answer[1]); answer[0] = answer[0] / max; answer[1] = answer[1] / max; for(int i : answer) System.out.println(i); */ for(int i : answer) System.out.println(i); return answer; } public static void main(String args[]){ programmer_0_29 t = new programmer_0_29(); System.out.println("---------------------------------------"); System.out.println("result = " + t.solution(a1,b1,c1,d1)); System.out.println("---------------------------------------"); // System.out.println("result2 = " + t.solution(a2,b2,c2,d2)); // System.out.println("---------------------------------------"); } } | cs |