Search
Duplicate

숫자 카드 나누기

문제 설명 및 제한사항

아이디어 및 해결 방법

코드

def gcd(a, b): while b != 0: a, b = b, a % b return a def ngcd(arr): if len(arr) == 1: return arr[0] g = gcd(arr[0], arr[1]) for i in range(2, len(arr)): g = gcd(g, arr[i]) return g def divisors(n): arr = [] for i in range(1, int(n**0.5) + 1): if n % i != 0: continue if i ** 2 == n: arr.append(i) else: arr.append(i) arr.append(n // i) arr.sort() return arr def solution(arrayA, arrayB): agcd = ngcd(arrayA) bgcd = ngcd(arrayB) adiv = divisors(agcd) bdiv = divisors(bgcd) answer = 0 for x in adiv[::-1]: if all(i % x != 0 for i in arrayB): answer = max(x, answer) break for x in bdiv[::-1]: if all(i % x != 0 for i in arrayA): answer = max(x, answer) break return answer
Python
복사

출처

프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges