본문 바로가기

프로그래머스/기타

N개의 최소공배수

728x90

programmers.co.kr/learn/courses/30/lessons/12953

 

코딩테스트 연습 - N개의 최소공배수

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배

programmers.co.kr

#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