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

·2024년 4월 17일

문제

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

제한 사항

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

입력

arr : [2,6,8,14]

출력

168

내가 했던 풀이 방법

  1. arr배열을 내림차순으로 정렬한 뒤, 0번째에 있는 수를 n과 add에 저장한다. (가장 큰 수를 저장한다. n과 add에 따로 저장하는 이유는 n은 계산하는 수이고, add는 n의 배수로 n을 증가시켜주기 위함이다.)
  2. while문을 can을 true로 초기화한 뒤, arr을 1부터 마지막까지 순환하면서 arr[i]가 n으로 나누어 떨어지지 않는 경우 can을 false로 바꾼 뒤 탈출한다.
  3. can이 true일 경우, 모든 수가 나누어 떨어지는 것이므로 while문을 탈출한다. false일 경우, n에 add를 더해준 뒤, 2번을 다시 수행한다.

코드

function solution(arr) {
    var answer = 0;
    arr.sort((a,b)=>b-a);
    let n = arr[0];
    let add = n;
    while (true) {
      let can = true;
      for (let i = 1; i < arr.length; i++) {
        if (n % arr[i] !== 0) {
          can = false;
          break;
        }
      }

      if (can) {
        break;
      }
      n += add;
    }
    return n;
}

회고

문제가 너무너무너무너무 쉬운데 괄호 때문에... 무한 반복에서 헤어나올 수 없어서 한참을 푼 문제... 오늘 문제가 정말 많이 안 풀렸는데 오늘은 안 풀리는 날이었던 것 같다..ㅜㅜ 다른 문제들도 순탄하게 풀리지가 않았는데 이번 문제도 똑같았다.. 이렇게 쉬운 문제를.. 안 풀릴 땐 과감하게 쉬어가는 마음을 가져야겠다.. 내일은 잘 풀테니까

profile
Frontend🍓

0개의 댓글