문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public int solution(int a, int b) {
int answer = 0;
// a의 약수 배열
int arr[] = intmeasure(a);
// b의 약수 배열
int brr[] = intmeasure(b);
// A와 B의 최대 공약수
int divisor = theGreatestCommonDivisor(arr, brr);
// 분모(b)를 최대 공약수로 나눈다.
b /= divisor;
answer = primefactor(b);
return answer;
}
public int primefactor(int b) {
// System.out.print(b + " => ");
while(b != 1) {
if(b % 2 == 0) {
b /= 2;
} else if (b % 5 == 0) {
b /= 5;
} else {
break;
}
}
// System.out.println(b);
if(b == 1) {return 1;} else {return 2;}
}
// 최대공약수 구하기
public int theGreatestCommonDivisor(int[] arr, int[]brr) {
int i = 0;
int j = 0;
int num = 0;
while(i < arr.length && j < brr.length) {
if(arr[i] == brr[j]) {
num = arr[i];
i++;
j++;
} else {
if(arr[i] > brr[j]) {
j++;
} else {
i++;
}
}
}
return num;
}
// 주어진 정수의 약수 구하기
public int[] intmeasure(int n) {
String measure = "";
for(int i = 1; i <= n; i++) {
if(n%i == 0) {
measure += i + ",";
}
}
String[] arrs = measure.split(",");
int[] nums = new int [arrs.length];
for(int i = 0; i < arrs.length; i++) {
nums[i] = Integer.parseInt(arrs[i]);
}
// for(String arr : arrs) {
// System.out.print(arr + " ");
// }
// System.out.println();
return nums;
}
}
Java
복사