[프로그래머스] 숫자 카드 나누기

Bong2·2024년 5월 10일
0

알고리즘

목록 보기
18/63

문제 - 숫자 카드 나누기

문제 접근

문제의 설명대로 구현을 하면 된다.
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;
    }
}
profile
자바 백엔드 개발자로 성장하자

0개의 댓글