https://school.programmers.co.kr/questions/40997
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
※. arrayA, arrayB의 최대공약수를 구한다.
※. 최대공약수가 다른 배열의 약수인지 확인한다.
(arrayA의 최대공약수 = arrayA의 모든 원소 중 가장 큰 약수 = 조건에 맞는 수 중에 이보다 큰 수는 없다.)
(arrayA의 최대공약수가 arrayB의 약수이다 = 최대공약수가 18이라면 [1,2,3,6,9,18] 모든 약수가 arrayB의 약수 = 답은 0)
class Solution {
public int solution(int[] arrayA, int[] arrayB) {
int answer = 0;
int a = arrayA[0];
int b = arrayB[0];
for(int i = 1; i < arrayA.length; i++) {
if(arrayA[i] % a == 0) continue;
int max = Math.max(arrayA[i] , a);
int min = Math.min(arrayA[i], a);
a = gcd(max, min);
}
for(int i = 1; i < arrayB.length; i++) {
if(arrayB[i] % b == 0) continue;
int max = Math.max(arrayB[i] , b);
int min = Math.min(arrayB[i], b);
b = gcd(max, min);
}
for(int i : arrayB) {
if(i % a == 0) {
a = 0;
break;
}
}
for(int i : arrayA) {
if(i % b == 0) {
b = 0;
break;
}
}
answer = Math.max(a,b);
return answer;
}
static int gcd(int a, int b) {
if(b == 0) return a;
return gcd(b, a%b);
}
}
'프로그래머스' 카테고리의 다른 글
[프로그래머스] 상담원 인원 [자바] (0) | 2023.08.08 |
---|---|
[프로그래머스] 두 원 사이의 정수 쌍 [자바] (0) | 2023.05.15 |
[프로그래머스 Level 4] 올바른 괄호의 갯수 [자바] (0) | 2022.11.15 |
[프로그래머스 Level 2] 게임 맵 최단거리 [자바] (0) | 2022.11.15 |
[프로그래머스 Level 2] 가장 큰 수 [자바] (0) | 2022.11.13 |