Level 2. N개의 최소공배수

Pear_Mh·2021년 6월 24일
0

Programmers-Level 2.

목록 보기
15/40

N개의 최소공배수

코딩테스트 연습 > 연습문제 > N개의 최소공배수
https://programmers.co.kr/learn/courses/30/lessons/12953


문제 설명

  • Input value = arr(list(int)), not sorted

    • 1<= arr length <=15

    • 1<= a in arr <=100

  • Output value = gcd of list


문제 구상

  1. lcm(m,n)=(mn)/gcd(m,n)lcm(m,n) = (m*n)/gcd(m,n) 을 이용
    • 이 경우, math.gcd 이용 or gcd 생성하여 풀이
#00-1
from math import gcd

또는,

#00-2
def gcd(m,n):
    for i in range(1,max(n,m)+1):
        if n%i == 0 and m%i == 0:
            gcd = i
    return gcd
  1. 입력된 리스트의 정렬 여부가 언급되어있지 않음으로,
#01
arr.sort()
  1. 리스트의 0번째 원소값(가장 작은 값)을 (1)식 적용 후, return
#02
for i in range(1,len(arr)):
    arr[0]=arr[0]*arr[i]//gcd(arr[0],arr[i])
arr[0]

문제 풀이

from math import gcd

def solution(arr):
    arr.sort()
    for i in range(1,len(arr)):
        arr[0]=arr[0]*arr[i]//gcd(arr[0],arr[i])
    return arr[0]
# Code test
arr = [2,6,8,14]
solution(arr)
profile
Beyond the new era.

0개의 댓글

관련 채용 정보