211114 - N개의 최소 공배수

이상해씨·2021년 11월 14일
0

알고리즘 풀이

목록 보기
7/94

◾ N개의 최소 공배수 : 프로그래머스 LEVEL 2

문제

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.


입력

  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

출력

  • n개의 숫자의 최소 공배수

입출력 예

arrresult
[2, 6, 8, 14]168
[1, 2, 3]6

◾ 풀이

1. 해설

  • 두 수 A, B의 최소 공배수는 A * B / (A, B의 최대 공약수)로 구할 수 있다.
  • 1개 이상의 숫자 배열의 최소 공배수를 구해야하므로 최대 공약수는 빠른 계산을 통해 유클리드 호제법을 사용한다.
  • 숫자 리스트의 값 2개씩 선택하여 최소 공배수를 구해나간다.

2. 프로그램

  1. arr[0]answer에 입력
  2. arr[1] ~ arr[n-1]까지의 수와 answer 최소 공배수를 구해간다.
    • A, B의 최소 공배수 = A * B // (A, B의 최대 공약수)
# 코드
import math

def solution(arr):
    answer = arr[0] # arr[0] 입력 
    
    # arr의 나머지 수와 비교하며 최소 공배수 계산
    for num in arr[1:]:
        answer = answer * num // math.gcd(answer, num)
    
    return answer

profile
후라이드 치킨

0개의 댓글

관련 채용 정보