[프로그래머스 level2] N개의 최소공배수

김예지·2021년 10월 18일
1

문제

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


문제 풀이

코드

//최대공약수
function twoMax(a, b){
    let L=0;
    const min=a<b? a:b;
    for(let i=1; i<=min; i++){
        if(a%i===0 && b%i===0) L=i;
    }
    return L;
}
//최소공배수
function solution(arr) {
    return arr.reduce((a,b) => (a*b) / twoMax(a,b), 1);
}
  • 예전에 푼 최소공배수와 최대공약수 문제를 풀었으면 쉬운 문제이다. 나도 처음에는 이 문제풀이 방식으로 접근했는데, (두수의 곱=최대공약수*최소공배수) 안풀려서 왜지? 생각했는데 '두수'의 곱임을 간과했다. 이 문제에서는 [2,6,8,14]와 같이 수가 여러개가 나오는데, 처음에는 전체 다 곱해버렸다. 따라서 두수씩곱해서 구해야한다. 공식이 두수의 곱임을 기억하자.

  • 그리고 함수를 twoMax함수를 solution안에 넣어도 되고, 밖에 빼도 된다.

  • reduce를 통해 누적 곱도 구할수 있구나! "누적"이라면 합이 아니더라도 이런식으로도 활용할 수 있다는걸 기억하자.


참고

profile
내가 짱이다 😎 매일 조금씩 성장하기🌱

1개의 댓글

comment-user-thumbnail
2021년 10월 27일

10/27

답글 달기