최대 공배수 알고리즘을 쓰는 경우에 보통 gcd를 사용한다.
그렇지만 리스트를 사용해서 gcd를 구할 경우가 있는데 이 경우에
코드를 입력하세요
arr= [1,2,3]
gcd = gcd(arr) #에러
gcd = gcd(1,2,3) #가능
이렇게 적을 경우 에러가 발생한다. => 리스트는 정수가 아니기 때문.. gcd와 lcm의 경우에는 인자를 정수로 가져야 된다.
def gcd(*args, **kwargs): # real signature unknown
""" Greatest Common Divisor. """
pass
https://stackoverflow.com/questions/29194588/python-gcd-for-list
를 참고하였다.
해결 방법은
from fractions import gcd
from functools import reduce
def find_gcd(list):
x = reduce(gcd, list)
return x
https://heytech.tistory.com/49
블로그를 보면서 이해하게 되었다.
연속적으로 값을 더하거나 곱할 경우에 쓰는 것 같음.
import math
n = int(input())
arr = list(map(int, input().split()))
lcm = math.lcm(*arr)
gcd = math.gcd(*arr)
*의 경우는 range같은 메소드에도 사용가능하다.
print(*range(1,55))
의 경우에는 1~54까지 값을 반환한다.
2번 방법은 코테문제를 풀던 중 떠올렸지만 reduce의 경우는 새로 알게 되었다.