프로그래머스
프로그래머스 숫자 카드 나누기
콩순이냉장고
2022. 12. 19. 18:37
문제 URL : https://school.programmers.co.kr/learn/courses/30/lessons/135807
문제 접근법 : 쉽게설명하면 arrayA의 최대공약수를 a라고하고 arrayB의최대공약수를 b라고할때
a로 arrayB하나라도 나눠지는지
반대로 b로 arrayA가 하나라도 나눠지는지 확인한후 나눠지는게 없다면
a,b값중 최대값을 리턴하면 되는문제이기때문에 어렵지 않은 문제입니다.
#include<bits/stdc++.h>
using namespace std;
int gcd(int a, int b) {
return b == 0 ? a : gcd(b, a % b);
}
int getGcd(vector<int>& v) {
int g = v[0];
for (int i : v)g = gcd(g, i);
return g;
}
int getMax(vector<int>& v,int g) {
for (int i : v)if (i % g == 0)return 0;
return g;
}
int solution(vector<int> arrayA, vector<int> arrayB) {
int g1 = getGcd(arrayA);
int g2 = getGcd(arrayB);
return max(getMax(arrayA,g2),getMax(arrayB,g1));
}
궁금한점 혹은 모르는점 어떤 질문이든댓글은 언제나 환영입니다.