💡 생각
최소공배수는 수들의 배수 중 공통이 되는 가장 작은 숫자이므로 배열에서 가장 큰 수보다 커야한다. 배열의 모든 수들로 나누어 떨어져야 한다. 배열의 마지막 수까지 나누어 떨어지는 경우 그 수를 리턴한다.
📖 내 코드
def solution(arr):
_max = max(arr)
while True:
for i in range(len(arr)):
if _max % arr[i] == 0:
if i == len(arr) - 1:
return _max
else:
_max += 1
break
📑 다른 사람의 풀이
from fractions import gcd
def solution(arr):
answer = arr[0]
for n in arr:
answer = n * answer / gcd(n, answer)
return answer
최대공약수, 최소공배수를 구하는 함수 자체가 있다.... 역시 파이썬
최대공약수를 구하는 함수가 gcd
(Greateset Common Divisor)이고 최소공배수를 구하는 함수는 lcm
(Least Common Multiple)이다. lcm
메서드는 파이썬 3.9x부터 지원된다는데 프로그래머스에서 지원하는 버전은 3.8버전이기 때문에 사용할 수 없다고 한다. fractions
가 아니라 math
에서 임포트한 gcd
를 사용해도 된다.
from math import gcd
def solution(arr):
answer = arr[0]
for n in arr:
answer = n * answer // gcd(n, answer)
return answer
'Coding Test Practice' 카테고리의 다른 글
짝지어 제거하기 (0) | 2024.04.04 |
---|---|
구명보트 (1) | 2024.04.04 |
[Coding Test Practice] 신규 아이디 추천 (0) | 2021.10.30 |
[Coding Test Practice] 가장큰수 파이썬 (0) | 2021.10.21 |
[Coding Test Practice] 오픈채팅방 파이썬 (0) | 2021.10.19 |