문제 - 숫자 카드 나누기
문제의 설명대로 구현을 하면 된다.
A가 가진 카드들에 적힌 모든 숫자를 나눌 수 있고 B가 가진 카드는 모든 숫자 중 하나도 나눌 수 없는 가장 큰 양의 정수 a를 구하기 때문에 카드들을 오름차순으로 정렬한 다음 제일 낮은 숫자부터 시작해서 -1 씩 하면서 나눌 수 있는 숫자를 찾는다.
import java.util.*;
class Solution {
public int solution(int[] arrayA, int[] arrayB) {
int answer = 0;
Arrays.sort(arrayA);
Arrays.sort(arrayB);
int aval = getBigNumber(arrayA,arrayB);
int bval = getBigNumber(arrayB,arrayA);
answer = Math.max(aval,bval);
return answer;
}
public int getBigNumber(int []arrA,int []arrB)
{
int a = 0;
//해당 배열의 가장 작은 수부터 A에서 나눠지는 수 확인
for(int i=arrA[0];i>0;i--)
{
for(int j=0;j<arrA.length;j++)
{
if(arrA[j] % i == 0 )
{
a = i;
}else if(arrA[j] % i != 0){
a = 0;
break;
}
}
if(a!=0)
break;
}
if(a == 0)
return 0;
//B에서 나누어지지 않는 지 확인
for(int j=0;j<arrB.length;j++)
{
if(arrB[j] % a == 0 )
{
return 0;
}
}
return a;
}
}