https://www.hackerrank.com/challenges/between-two-sets/problem
개답답하다. 답변좀
테스트 케이스에
3 2 2 3 6 42 84이거 넣으면 타임아웃뜨는데
고수들있으면 도움좀
* Write your code here.
*/
int maxA = a[0]; //최대값
int minB = b[0]; //최소값
int maxB = b[0];
int gcm = a[0]; //최대공약수
int lcm = a[0]; //최소공배수
int sizeA = a.length;
int sizeB = b.length;
int bigTemp = a[0];
int count = 0;
int idx = 1;
int v1 = 0;
int v2 = 0;
int vtemp = 0;
int nam = 1;
for(int i=0; i<sizeA-1; i++){
if(a[i]<a[i+1])
maxA = a[i+1];
};
for(int i=0; i<sizeB-1; i++){
if(b[i]>b[i+1]){
minB = b[i+1];
};
};
if(maxA > minB){
}else if(sizeA == 1){
if(sizeB == 1){
while(bigTemp <= minB){
if(minB % bigTemp == 0){
count++;
};
idx++;
bigTemp = gcm*idx;
};
}else{
while(bigTemp<minB){
for(int i=0; i<sizeB; i++){
if(b[i] % bigTemp != 0){
break;
};
if(i == sizeB-1){
count++;
};
};
idx++;
bigTemp = gcm*idx;
};
};
}else{
for(int i=0; i<sizeA-1; i++)
{
v1 = gcm;
v2 = a[i+1];
//v2 to big
if(v1 > v2){
vtemp = v1;
v1 = v2;
v2 = vtemp;
};
while(nam > 0){
nam = v2%v1;
gcm = v1;
};
lcm = lcm*a[i+1]/gcm;
};
bigTemp = lcm;
while(bigTemp<=minB){
for(int i=0; i<sizeB; i++){
if(b[i] % bigTemp != 0){
break;
};
if(i == sizeB-1){
count++;
};
};
idx++;
bigTemp = lcm*idx;
};
}
return count;
설리 - dc App
드렸습니다