Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 카드를 그룹으로 재정렬

<시간/>

문제

숫자 배열 arr을 첫 번째 인수로, 숫자 num을 두 번째 인수로 취하는 JavaScript 함수를 작성해야 합니다.

배열의 숫자는 [1, 13] 범위(한도 포함)에 있으며 카드 놀이의 1부터 시작하는 인덱스를 나타냅니다.

우리 함수는 각 그룹이 크기가 num이고 num 연속 카드로 구성되도록 카드를 그룹으로 재배열하는 방법이 있는지 여부를 결정해야 합니다.

예를 들어, 함수에 대한 입력이

인 경우

입력

const arr = [1, 4, 3, 2];
const num = 2;

출력

const output = 2;

출력 설명

카드를 [1, 2], [3, 4]로 재배열할 수 있기 때문에

예시

다음은 코드입니다 -

const arr = [1, 4, 3, 2];
const num = 2;
const canRearrange = (arr = [], num = 1) => {
   const find = (map, n, num) => {
   let j = 0
   while(j < num) {
      if(!map[n + j]) return false
         else map[n + j] -= 1
         j++
      }
      return true
   }
   let map = {}
   arr.sort(function(a, b) {return a - b})
   for(let n of arr) {
      map[n] = map[n] ? map[n] + 1 : 1
   }
   for(let n of arr) {
      if(map[n] === 0 || find(map, n, num)) continue
         else return false
   }
   return true
};
console.log(canRearrange(arr, num));

출력

true