Search
Duplicate

숫자 카드 나누기

Level
2
문제 진행 상태
코드 완료
해설 작성 중
알고리즘 & 자료구조
리스트
정렬
정답률 (%)
48
태그
연습문제

문제 링크

풀이 과정

전체 코드

def get_divisors(val): divisors = set([val]) for i in range(1, int(val ** 0.5)+1): if val % i == 0: divisors.add(i) divisors.add(int(val//i)) return list(sorted(divisors, reverse=True)) def find_gcd(divisors, arr): for denom in divisors[:-1]: flag = True for val in arr: if val % denom != 0: flag = False break if flag: return denom return 1 def is_multiple_gcd(gcd, array): for val in array: if val % gcd == 0: return True return False def solution(arrayA, arrayB): divisorsA = get_divisors(min(arrayA)) divisorsB = get_divisors(min(arrayB)) gcd_a = find_gcd(divisorsA, arrayA) gcd_b = find_gcd(divisorsB, arrayB) if not is_multiple_gcd(gcd_a, arrayB) and is_multiple_gcd(gcd_b, arrayA): return gcd_a elif is_multiple_gcd(gcd_a, arrayB) and not is_multiple_gcd(gcd_b, arrayA): return gcd_b elif not is_multiple_gcd(gcd_a, arrayB) and not is_multiple_gcd(gcd_b, arrayA): return max(gcd_a, gcd_b) else: return 0
Python
복사