알고리즘/프로그래머스

[Programmers] 숫자 카드 나누기 _Python

3o14 2022. 11. 23. 00:00
728x90
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/135807

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

from math import gcd
# 리스트 내 최대 공약수 구해줌
def get_gcd(arr):
    g = arr[0]
    for i in range(1,len(arr)):
        g = gcd(g,arr[i])
    return g
    

def solution(arrayA, arrayB):
    # 첫 번째 조건, 두 번째 조건 둘다 아닐때
    res = 0

	# 최대공약수 가져옴
    A, B = get_gcd(arrayA), get_gcd(arrayB)

	# 첫 번째 조건
    for i in arrayB:
        if i % A == 0:
            break
    else:
        res = max(A,res)
	# 두 번째 조건
    for i in arrayA:
        if i % B == 0:
            break
    else:
        res = max(B,res)

    return res

 

새로 알게 된 함수 gcd

 

사용법

from math import gcd

math.gcd(3) # 3 반환
math.gcd(3, 6) # 3 반환
math.gcd(66, 22, 11) # 11 반환

* 최대 공약수란?
둘 이상의 정수의 공약수 중에서 가장 큰 것을 말한다.
greatest common divisor 라 부르며 약자로 gcd 라 한다. 이 약자를 그대로 함수 이름으로 사용하는 걸로 보임

LIST