👨🏻💻알고리즘/프로그래머스
[프로그래머스/Python] Lv2. N개의 최소공배수
waveofmymind
2023. 3. 16. 23:57
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12953
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
import math
def solution(arr):
total = arr[0]
for i in arr[1:]:
total = total*i//math.gcd(total,i)
return total
풀이
- 파이썬의 math 모듈의 gcd()는 인자로 받은 값들의 최대공약수를 구해준다.
파이썬 3.9부터 지원하는 최소공배수를 구하는 lcm() 함수도 있으나, 프로그래머스의 파이썬은 버전이 3.8.5라서 지원하지 않는다. - 그래서 최소 공배수를 구하기 위해선 두 수의 곱을 두 수의 최대공약수로 나누면 된다.
- 구하려는 모든 값의 최소공배수를 total이라고 하면, 초기화를 첫 항으로 해준다.
- 그 후, 두번째 항부터 현재 total과 현재 항의 최소공배수를 새로운 total로 바꿔나가면서 모든 수에 대한 최소 공배수를 구한다.