컴굥일지
[Programmers/프로그래머스 lv2][C++] N개의 최소공배수 본문
반응형
문제
https://school.programmers.co.kr/learn/courses/30/lessons/12953
문제 내용
입력받은 수들의 최소공배수를 구하면 된다.
문제 풀이
기본적으로 최대공약수/최소공배수 구하는 식을 알면 된다.
보통은 2개의 수에 대해서만 최소공배수를 구하지만, 이 문제에서는 최소 공배수 구하는 것을 N-1번 반복하면 된다.
코드
#include <string>
#include <vector>
using namespace std;
int calcGCD(int a, int b) { // 반드시 a가 더 크게 입력할 것
while (b) {
a %= b;
swap(a, b);
}
return a;
}
int calcLCM(int a, int b) {
if (a < b)
swap(a, b);
return a / calcGCD(a, b) * b; //overflow 방지를 위해 나누기 먼저 진행
}
int solution(vector<int> arr) {
int num = arr[0];
for (int i = 1; i < arr.size(); i++) {
num = calcLCM(num, arr[i]);
}
return num;
}
반응형
'알고리즘 > 코테 문제' 카테고리의 다른 글
[Programmers/프로그래머스 lv2][C++] 귤 고르기 (0) | 2023.08.07 |
---|---|
[Programmers/프로그래머스 lv2][C++] 멀리 뛰기 (0) | 2023.08.07 |
[Programmers/프로그래머스 lv2][C++] 점프와 순간 이동 (0) | 2023.08.05 |
[Programmers/프로그래머스 lv2][C++] 예상 대진표 (0) | 2023.08.04 |
[Programmers/프로그래머스 lv2][C++] 카펫 (0) | 2023.08.04 |
Comments