-
[Python] Programmers N개의 최소공배수Algorithm 2023. 2. 6. 17:54728x90반응형
- 목차
문제 소개.
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
[2,6,8,14] 168 [1,2,3] 6 문제 분석.
최소공배수를 계산하기 위해서 최대공약수를 활용하는 것이 중요합니다.
아래 계산식과 같이 최소공배수는 두 수의 곱에서 최대공약수를 나눈 것과 동일하기 때문이죠.
$$ gcm(a, b) = \frac{a \times b}{gcd(a,b)} $$
Python 에서는 math 모듈의 gcd 함수를 사용하여 손쉽게 최대공약수 계산을 할 수 있습니다.
문제 풀이.
def solution(arr): import math gcm = arr[0] # 최소공배수 for i in range(1, len(arr)): cur = arr[i] gcd = math.gcd(int(gcm), cur) gcm = gcm * cur / gcd return int(gcm)
반응형'Algorithm' 카테고리의 다른 글
(Java) Programmers 행렬 테두리 회전하기 (Queue, Matrix Rotate) (0) 2023.02.20 [Java] Programmers 3차 n진수 게임 ( 진법 변환, base conversion) (0) 2023.02.06 [Programmers] 큰 수 만들기 (Java, Stack) (0) 2023.02.02 (Java) Programmers 스킬트리 (0) 2023.01.30 [Java] Programmers 3차 파일명 정렬 (0) 2023.01.26