[Python] 30초 파이썬 - gcd

리미·2020년 4월 28일
0

30 Seconds of Python

목록 보기
2/5

필요기초지식 : 최대공약수
(팀장님이 최대공약수가 뭐냐고 그랬다..말잇못)

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
profile
Python이 하고싶은데 자꾸 Flutter 시켜서 빡쳐서 만든 블로그

0개의 댓글