설명이 긴데 잘 읽어보면 핵심은 한 그룹의 최대공약수로 다른 그룹의 모든 수를 나눌 수 없는 값을 찾는 것이다 만약 그룹 별로 조건을 만족하는 값이 하나씩 나온다면 그 중 큰 값을 정답으로 한다.
#include <string>
#include <vector>
#include <algorithm>
//핵심 : 한그룹의 최대공약수로 다른 그룹을 나눴을 때 안 나눠지는게 있는가
using namespace std;
int gcd(int a, int b) { //최대공약수 구하기
if (b == 0) return a;
return gcd(b, a % b);
}
int solution(vector<int> arrayA, vector<int> arrayB) {
int answer = 0;
int cur = arrayA[0];
for (int i = 1; i < arrayA.size(); i++) {
cur = gcd(cur, arrayA[i]);
if (cur == 1) break;
}
if (cur != 1) {
int cnt;
for (cnt = 0; cnt < arrayB.size(); cnt++) {
if (arrayB[cnt] % cur == 0) break;
}
if (cnt == arrayB.size()) answer = cur;
}
cur = arrayB[0];
for (int i = 1; i < arrayB.size(); i++) {
cur = gcd(cur, arrayB[i]);
if (cur == 1) break;
}
if (cur != 1) {
int cnt;
for (cnt = 0; cnt < arrayA.size(); cnt++) {
if (arrayA[cnt] % cur == 0) break;
}
if (cnt == arrayA.size()) answer = max(cur, answer); //만약 두 그룹 다 조건에 만족하는 수가 있다면 그 중에 큰 수가 정답
}
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][LV 2][C++]수식 최대화 (0) | 2024.05.29 |
---|---|
[프로그래머스][LV 2][C++]괄호 변환 (0) | 2024.05.28 |
[프로그래머스][LV2][C++][3차] 방금그곡 (0) | 2024.05.15 |
[프로그래머스][LV.2][C++]삼각 달팽이 (0) | 2024.05.06 |
[프로그래머스][LV.2][C++]가장 큰 정사각형 찾기 (0) | 2024.05.06 |