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;