파이썬 여러수의 최소공배수,공약수 팁

심현덕·2022년 8월 15일
0

코딩 테스트

목록 보기
6/6

최대 공배수 알고리즘을 쓰는 경우에 보통 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
를 참고하였다.
해결 방법은

1. reduce 사용

from fractions import gcd
from functools import reduce
def find_gcd(list):
    x = reduce(gcd, list)
    return x

https://heytech.tistory.com/49
블로그를 보면서 이해하게 되었다.
연속적으로 값을 더하거나 곱할 경우에 쓰는 것 같음.

2.*로 리스트 언랩핑

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의 경우는 새로 알게 되었다.

profile
심현덕이에요

0개의 댓글