728x90
반응형
programmers.co.kr/learn/courses/30/lessons/12953
최종 코드
from math import gcd
def get_lcm(a, b):
return a * b // gcd(a, b)
def solution(arr):
lcm = arr[0]
for i in arr[1:]:
lcm = get_lcm(lcm, i)
return lcm
풀이 과정
풀이 시간 7분
1. 두 수의 최소공배수 구하기
from math import gcd
def get_lcm(a, b):
return a * b // gcd(a, b)
두 수 a와 b가 있다면, a와 b의 공통된 배수 가운데 최솟값이 최소공배수이다.
따라서 최소공배수는 두 수의 곱을 두 수의 최대공약수로 나눈 것과 같다.
만약, a = 6, b = 18일 때, 최소공배수 = 6 * 18 / 6 = 18이다.
그래서 최소공배수를 구하기 위해서는 두 수의 최대공약수를 구해야한다.
최대공약수는 a의 약수이면서 b의 약수인 수 중 최댓값을 말한다.
파이썬은 math 모듈에서 최대공약수를 구하는 함수를 제공한다.
2. N개의 최소공배수 구하기
그렇다면 N개의 최소공배수는 어떻게 구할까?
N개의 최소공배수는 먼저 두 수의 최소공배수를 구하고, 그 값과 다른 수의 최소공배수를 구해나가면 된다.
def solution(arr):
lcm = arr[0]
for i in arr[1:]:
lcm = get_lcm(lcm, i)
return lcm
참고
728x90
반응형
'코테 노트 > 프로그래머스' 카테고리의 다른 글
Level 2 소수만들기 Python 3 (0) | 2021.01.21 |
---|---|
Level 2 올바른 괄호 Python (0) | 2021.01.15 |
Level 2 짝지어 제거하기 (0) | 2021.01.14 |
Level 2 JadenCase 문자열 만들기 Python3 (0) | 2021.01.08 |
Level 2 행렬의 곱셈 Python3 (0) | 2021.01.08 |