알고리즘/프로그래머스
[연습문제] N개의 최소공배수 - Python / JavaScript
Dev. Dong
2025. 2. 26. 22:09
문제 링크 - https://school.programmers.co.kr/learn/courses/30/lessons/12953
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[문제 간단 요약]
1. 주어진 배열의 값의 최소공배수를 구하는 문제
[문제 해결 방안]
1. 유클리드 호제법을 활용하여 최소공배수 계산
[유클리드 호제법]
1. 큰 수 a / 작은 수 b / a를 b로 나눈 나머지 r이 있을 때, a와 b / b와 r의 최대 공약수는 같음
2. 나머지가 이 될 때까지 연속해서 사용하여 나누는 값을 최대 공약수

[최소 공약수]
1. 최소 공약수 = 큰 수 a * 작은 수 b / 최대 공약수
[문제 해결 코드 - python]
def GCD(a,b):
while True:
if a % b == 0:
return b
tmp = a % b
a = b
b = tmp
def solution(arr):
answer = 0
sort_arr = sorted(arr)
a = sort_arr.pop()
while sort_arr:
b = sort_arr.pop()
tmp = a * b
a = tmp / GCD(a,b)
return a
[문제 해결 코드 - javascript]
function GCD(a,b) {
while (true) {
if (a % b === 0) {
return b
}
let tmp = a % b
a = b
b = tmp
}
}
function solution(arr) {
let a,b
let arr_sort = arr.sort((a,b) => a-b)
a = arr_sort.pop()
while (arr_sort.length !== 0) {
b = arr_sort.pop()
let tmp = GCD(a,b)
a = a * b / GCD(a,b)
}
return a;
}