728x90
programmers.co.kr/learn/courses/30/lessons/12953
#include <string>
#include <vector>
#include <algorithm>
#include <cmath>
#include <map>
#include<iostream>
using namespace std;
int gcd (int a , int b){
while(b!=0){
int r = a%b;
a=b;
b=r;
}
return a;
}//유클리드 호제법
int lcd (int gcdn, int a, int b){
return (a*b)/gcdn;
}
int solution(vector<int> arr) {
int answer = arr[0];
for(int i=1; i<arr.size(); i++){
int getgcd = gcd(answer,arr[i]);
answer = lcd(getgcd,answer,arr[i]);
}
return answer;
}
어떤 알고리즘? 어떤 논리로?
- 최소공배수 최대공약수를 푸는 문제였다. 최대공약수를 유클리드 호제법으로 구한 후에 최소공배수를 구한다. 배열에 있는 원소들하나하나 돌아가면서 최소공배수를 구하면 된다.
'프로그래머스 > 기타' 카테고리의 다른 글
숫자의 표현 (0) | 2021.01.19 |
---|---|
프렌즈 4블록 - 카카오 기출 (0) | 2021.01.19 |
이진 변환 반복하기 (0) | 2021.01.13 |
영어 끝말잇기 (0) | 2021.01.07 |
삼각 달팽이 (0) | 2020.12.29 |