알고리즘/프로그래머스
[Programmers] 숫자 카드 나누기 _Python
3o14
2022. 11. 23. 00:00
728x90
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/135807
풀이
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