https://school.programmers.co.kr/learn/courses/30/lessons/135807
class Solution {
public int solution(int[] arrayA, int[] arrayB) {
int answer = 0;
int gcdA = arrayA[0];
int gcdB = arrayB[0];
// 최대 공약수 구하기
for(int i=1;i<arrayA.length;i++){
gcdA = gcd(arrayA[i], gcdA);
gcdB = gcd(arrayB[i], gcdB);
}
//나눌 수 없는지 확인
if(!canDivide(arrayB, gcdA)){
answer = Math.max(answer, gcdA);
}
if(!canDivide(arrayA, gcdB)){
answer = Math.max(answer, gcdB);
}
return answer;
}
public static int gcd(int a, int b){
if(b==0) return a;
else return gcd(b, a%b);
}
public static boolean canDivide(int[] array, int gcd){
for(int num : array){
if(num%gcd == 0){
return true;
}
}
return false;
}
}
'코딩테스트 > 문제풀이 팁' 카테고리의 다른 글
[Kakao] HashMap의 value가HashSet일때 - 신고결과받기 (0) | 2024.03.19 |
---|---|
[그리디] Kakao - 두 큐 합 같게 만들기 (0) | 2024.03.18 |
int형 2차원 배열 복합정렬조건 (0) | 2024.03.16 |
[Kakao] 가장 많이 받은 선물 (0) | 2024.03.15 |
[Kakao] "년/월/일" 날짜 문제 "일"로 모두 환산하기 (0) | 2024.03.14 |