본문 바로가기

프로그래머스 2단계 - N개의 최소공배수 본문

알고리즘/2단계

프로그래머스 2단계 - N개의 최소공배수

개발자로 거듭나기 2022. 11. 22. 09:19
반응형

2 단계 : N개의 최소공배수

코딩테스트 연습 > 연습문제 > N개의 최소공배수


문제 설명

두 수의 최소공배수(Least Common Multiple)란 입력된 두 수의 배수 중 공통이 되는 가장 작은 숫자를 의미합니다. 예를 들어 2와 7의 최소공배수는 14가 됩니다. 정의를 확장해서, n개의 수의 최소공배수는 n 개의 수들의 배수 중 공통이 되는 가장 작은 숫자가 됩니다. n개의 숫자를 담은 배열 arr이 입력되었을 때 이 수들의 최소공배수를 반환하는 함수, solution을 완성해 주세요.


제한 사항
  • arr은 길이 1이상, 15이하인 배열입니다.
  • arr의 원소는 100 이하인 자연수입니다.

입출력 예
arr result
[2,6,8,14] 168
[1,2,3] 6

반응형

코드

function solution(arr) {
    // arr[0]에 n을 계속 증가시키면서 곱하면서 배열을 순회한다..
    // 그 와중에 모든 배열의 원소를 나누어 떨어지게 만드는 수가 바로 최소공배수
    
    let flag = false;
    let n = 1;
    while(!flag) {
        n++;
        for(let i = 1; i < arr.length; i++) {
            if((arr[0] * n) % arr[i] === 0) {
                flag = true;
            }
            else {
                flag = false;
                break;
            }
        }
    }
    return arr[0] * n
}

리뷰

순서는 다음과 같다
1. arr[0]을 기준으로 n=1 n을 곱해가면서 배열의 모든 원소들을 나누어 떨구는 수를 찾아낼 겁니다
2. 모두 나누어 떨군다면 flag를 true로 만들고 탈출합니다.
3. 그때의 arr[0] * n 값이 최소공배수죠?

총평 : 문제는 저렇게 짧은데 생각을 잘해야 풀겠죠?

출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12953
반응형
Comments