프로그래머스|숫자 카드 나누기

README·2023년 1월 19일
0

파이썬 PS풀이

목록 보기
116/136

문제 설명

두 배열을 입력받고 한 배열의 숫자는 모두 나눌 수 있지만 다른 한 배열의 숫자는 하나도 나눌 수 없는 최대의 수를 구하는 문제입니다.

작동 순서

  1. 두 배열을 입력받습니다.
  2. 각 배열의 최대공약수를 구합니다. 한 배열의 최대공약수를 구하는 방법은 배열의 앞에서부터 현재 숫자와 이전까지 숫자들의 최대공약수의 최대공약수를 구하는 것입니다.
  3. 문제에서 가능한 가장 큰 정수를 구하라고했는데 각 배열의 최대공약수를 반대 배열에 나눠본 후 양쪽 모두 하나도 나눠지지 않은 경우 더 큰 숫자, 하나는 나눠지지 않고 하나는 나눠지는 경우 나눠지지 않는 숫자, 둘 모두 나눠지는 경우 -1을 출력합니다.

소스코드

import math
def solution(arrayA, arrayB):
    answer = 0
    gcdA=getGcd(arrayA)
    gcdB=getGcd(arrayB)
    
    if checkDividable(gcdA,arrayB):
        answer=gcdA
    if gcdA<gcdB and checkDividable(gcdB,arrayA):
        answer=gcdB
    return answer

def getGcd(arr):
    gcd = arr[0]
    for i in arr:
        gcd=math.gcd(gcd, i)
    return gcd

def checkDividable(gcd, arr):
    for i in arr:
        if i<gcd:
            continue
        if i%gcd==0:
            return False
    return True
profile
INTP 개발자 지망생

0개의 댓글