https://programmers.co.kr/learn/courses/30/lessons/12953
문제 설명
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
제한 사항
- arr은 길이 1이상, 15이하인 배열입니다.
- arr의 원소는 100 이하인 자연수입니다.
입출력 예
arr | result |
[2,6,8,14] | 168 |
[1,2,3] | 6 |
문제 풀이
1. 내림차순으로 arr 정렬
2. 앞에서부터 2개씩
즉, arr[i]과 arr[i+1]의 최대공약수를 찾고, 그로부터 최소공배수를 계산하여 arr[i+1]에 넣음
3 arr의 맨 마지막 원소값이 전체 arr이 최소공배수
* gcd 외부 라이브러리를 사용할 수도 있음!
solution.py
나의 풀이
def solution(arr): arr.sort(reverse=True) for i in range(len(arr)-1): a = arr[i] b = arr[i+1] while a%b: r = a%b a = b b = r arr[i+1] = (arr[i]*arr[i+1])/b return arr[-1]
다른 풀이
from fractions import gcd def nlcm(num): answer = num[0] for n in num: answer = n * answer / gcd(n, answer) return answer
출처: https://programmers.co.kr/learn/courses/30/lessons/12953/solution_groups?language=python3
'알고리즘 문제풀이 > 문제풀이' 카테고리의 다른 글
[python] 프로그래머스 Level.2 올바른 괄호 (0) | 2020.05.06 |
---|---|
[python] 프로그래머스 Level.2 피보나치 수 (0) | 2020.05.05 |
[python] 프로그래머스 Level.1 완주하지 못한 선수 (0) | 2020.05.03 |
[python] 프로그래머스 Level.1 모의고사 (0) | 2020.05.03 |
[python] 프로그래머스 Level.1 체육복 (0) | 2020.05.03 |