LV 2: 숫자 카드 나누기

ewillwin·2023년 8월 28일
0

문제 링크

LV 2: 숫자 카드 나누기


구현 방식

  • 먼저 arrayA의 최대공약수 gcdA, arrayB의 최대공약수 gcdB를 구해줌
  • 각각 arrayA와 arrayB를 순회하면서, gcdA가 arrayB의 원소를 나누는 경우가 있으면 flagA를 False로, gcdB가 arrayA의 원소를 나누는 경우가 있으면 flagB를 False로, flagA와 flagB가 둘 다 False라면 return 0
  • 구해진 flag에 따라 gcd를 return

코드

import math

def solution(arrayA, arrayB):
    N = len(arrayA)
    
    gcdA = 0; gcdB = 0
    for i in range(N):
        gcdA = math.gcd(gcdA, arrayA[i]); gcdB = math.gcd(gcdB, arrayB[i])

    flagA = True; flagB = True
    for i in range(N):
        if arrayB[i] % gcdA == 0: flagA = False
        if arrayA[i] % gcdB == 0: flagB = False
        if not flagA and not flagB: return 0
    
    if flagA and flagB: return max(gcdA, gcdB)
    elif flagA: return gcdA
    elif flagB: return gcdB
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글