2019년 4월 13일 토요일

# N개의 최소 공배수

최소공배수로 위키 검색을 해보면 좋은 방법이 눈에 바로 보인다.
p.s. 최대공약수는 유클리드 호제법이라는 훌륭한 알고리즘을 이용했다.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
/*
두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다.
예를 들어 2와 7의 최소공배수는 14가 됩니다. 
정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다.
n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.
*/
int solution(vector<int> arr) {
 int answer = 1;
 for (int idx = 1; idx < arr.size(); idx++) {
  arr[idx] = (arr[idx - 1] * arr[idx]) / GetGCD(arr[idx - 1], arr[idx]);
  answer = arr[idx];
 }
 return answer;
}
int GetGCD(int a, int b) {
 if (a % b == 0)
  return b;
 else
  return GetGCD(b, a % b);
}

댓글 없음:

댓글 쓰기