최소공배수로 위키 검색을 해보면 좋은 방법이 눈에 바로 보인다.
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); } |
댓글 없음:
댓글 쓰기