250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)N개의 최소공배수 본문
728x90
반응형
최대 공약수를 이용하여 최소 공배수를 구하는 방식을 사용하였다.
gcd(최대 공약수) 함수와 lcm(최소 공배수) 함수를 정의하였다.
for문을 돌면서 arr[i]와 arr[i + 1]의 최소 공배수를 구하여 arr[i + 1]에 다시 넣어주었다.
그래야 다음 최소 공배수를 구할 수 있기 때문이다..!
arr.size() - 1 만큼 반복하면 N개의 최소 공배수를 구할 수 있다..!
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int gcd(int a, int b)
{
int c;
while(b != 0)
{
c = a % b;
a = b;
b = c;
}
return a;
}
int lcm(int a, int b)
{
return a * b / gcd(a, b);
}
int solution(vector<int> arr) {
int answer = 0;
sort(arr.begin(), arr.end());
for(int i = 0; i < arr.size() - 1; i++)
{
answer = lcm(arr[i], arr[i + 1]);
arr[i + 1] = answer;
}
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)행렬의 곱셈 (0) | 2020.05.20 |
---|---|
(프로그래머스 c++)JadenCase 문자열 만들기 (0) | 2020.05.20 |
(프로그래머스 c++)짝지어 제거하기 (0) | 2020.05.20 |
(프로그래머스 c++)올바른 괄호 (2) | 2020.05.19 |
(프로그래머스 c++)타겟 넘버 (0) | 2020.05.18 |