728x90
https://school.programmers.co.kr/learn/courses/30/lessons/135807
분석
1. 각 배열의 최대공약수 구하기
2. 최대공약수로 다른 배열의 숫자가 나눠지는지 확인하기
3. 최대값 리턴
풀이
import sys,math
def solution(arrayA, arrayB):
def find(array): #최대공약수
GCD = 0
for i in range(len(array)):
GCD = math.gcd(GCD, array[i])
return GCD
def check(array, g): # 다른 배열 나눌 수 있는지 체크
for x in array:
if x % g == 0:
return 0
return g
gA=find(arrayA)
gB=find(arrayB)
gA=check(arrayB, gA)
gB=check(arrayA, gB)
return max((gA, gB))
from functools import reduce
from math import gcd
def solution(arrayA, arrayB):
gA, gB = reduce(gcd, arrayA), reduce(gcd, arrayB) # 최대공약수
answer = []
if all(each % gB for each in arrayA):
answer.append(gB)
if all(each % gA for each in arrayB):
answer.append(gA)
return max(answer) if answer else 0
[10, 20], [5, 17]
arrayA : i gB i%gB arrayB : i gA i%gA 10 1 0 5 10 5 20 1 0 17 10 7 arrayA % gB
FALSE
(나누어 떨어짐)arrayB % gA
True
(나누어 떨어지지 않음)
728x90