문제 URL : https://school.programmers.co.kr/learn/courses/30/lessons/135807
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 접근법 : 쉽게설명하면 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));
}
궁금한점 혹은 모르는점 어떤 질문이든댓글은 언제나 환영입니다.
'프로그래머스' 카테고리의 다른 글
프로그래머스 2차원 동전 뒤집기 (시간좀 줄여보기) (2) | 2022.12.28 |
---|---|
프로그래머스 숫자 타자 대회 (0) | 2022.12.19 |
프로그래머스 우박수열 정적분 (2) | 2022.12.19 |
프로그래머스 코딩테스트 실전 대비 모의고사 3차 문제집 22년 08월 10일 14:00 ~ 08월 23일 (0) | 2022.08.10 |
프로그래머스 코딩테스트 실전 대비 모의고사 2차 문제집 22년 07월 27일 14:00 ~ 08월 23일 (5) | 2022.07.27 |