프로그래머스
C# - 숫자 카드 나누기
ybbro
2023. 1. 4. 15:25
using System;
using System.Linq;
public class Solution {
public int solution(int[] arrayA, int[] arrayB) {
int answer = 0;
// 1부터 배열A의 0번째 원소까지
for(int i = 1;i <= arrayA[0]; i++)
{
// 0번째 원소가 나누어 떨어지지 않는 경우, 다음 수로
if(arrayA[0] % i != 0)
continue;
// 0번째 원소가 나누어 떨어지는 수에 대해
var div = arrayA[0] /i;
// 배열A의 모든 수가 나누어 떨어지고,
// 배열B의 모든 수가 나누어 떨어지지 않고,
// 이전에 나온 해보다 큰 경우에만
// 새로운 해를 지정하고 루프를 빠져나감
if(arrayA.All(a => a % div == 0)
&& arrayB.All(b => b % div != 0)
&& answer < div)
{
answer = div;
break;
}
}
// 배열 B에 대해서도 위와 같은 과정을 실행
for(int i = 1;i <= arrayB[0]; i++)
{
if(arrayB[0] % i != 0)
continue;
var div = arrayB[0] /i;
if(arrayA.All(a => a % div != 0)
&& arrayB.All(b => b % div == 0)
&& answer < div)
{
answer = div;
break;
}
}
return answer;
}
}