문제 설명
두 수의 최소공배수(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 |
나의 풀이
[Python(파이썬)]
def lcm(n,m):
import math
return int(n*m / math.gcd(n, m))
def solution(arr):
numlcm = 1
for i in range(len(arr)):
numlcm = lcm(numlcm, arr[i])
return numlcm
학습한 내용
오늘 내용은 Level1에서 많이 다뤘던 최소공배수 문제라서 비교적 간단하게 풀었다.
풀이과정
1. gcd - 최대공약수 구하기
2. lcm - 최소공배수 구하기
3. N개의 최소 공배수 구하기
1. gcd - 최대 공약수 구하기
따로 함수를 구할 수도 있지만 파이썬 math에는 gcd를 제공하기 때문에 이를 이용했다.
import math
math.gcd(n,m)
2. lcm - 최소 공배수 구하기
LCM = n * m / 최대공약수 = n * m / gcd(n, m))
int(n*m / math.gcd(n, m))
3. N개의 최소 공배수 구하기
for문을 이용해서 1, arr[0]의 최소공배수를 구하고 그 최소공배수와 arr[1], 이와 같은 식으로 반복해서 arr[-1]까지 구해갔다.
문제 출처
코딩테스트 연습 - N개의 최소공배수
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배
programmers.co.kr
'[Python] Programmers > Level2' 카테고리의 다른 글
[프로그래머스/Level2] 프린터 (0) | 2021.07.19 |
---|---|
[프로그래머스/Level2] 뉴스 클러스터링 (2018 카카오 블라인드) (0) | 2021.07.16 |
[프로그래머스/Level2] 소수 찾기 (0) | 2021.07.14 |
[프로그래머스/Level2] 예상 대진표 (2017 팁스타운) (0) | 2021.07.13 |
[프로그래머스/Level2] 조이스틱 (0) | 2021.07.12 |
댓글