필요기초지식 : 최대공약수
(팀장님이 최대공약수가 뭐냐고 그랬다..말잇못)
gcd : 최대공약수
from functools import reduce
def spread(arg):
ret = []
for i in arg:
if isinstance(i, list):
# i가 리스트 일때 합쳐서 넣는다
ret.extend(i)
else:
# 리스트가 아니면 그냥 추가
ret.append(i)
return ret
def gcd(*args):
# 여러개의 인자를 받는 함수
# 1.
numbers = []
numbers.extend(spread(list(args)))
print(numbers)
# 리스트화 시켜서 다시 합친다
# 3.
def _gcd(x, y):
# y 깂이 없으면 x 반환
# 있으면 gcd 함수 실행
return x if not y else gcd(y, x % y)
# 2. https://dalgonakit.tistory.com/109
return reduce((lambda x, y: _gcd(x, y)), numbers)
if __name__ == '__main__':
print(gcd(3, 31, 56, 6))
>>> python gcd.py
[3, 31, 56, 6]
[31, 3]
[3, 1]
[1, 0]
[56, 1]
[1, 0]
[6, 1]
[1, 0]
1