🧬알고리즘/Programmers

[JavaScript] 빈 배열에 추가, 삭제하기

뉴발자 2024. 6. 15.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

아무 원소도 들어있지 않은 빈 배열 X가 있다.

 

길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어진다.

 

flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] * 2번 추가한다.

 

flag[i]가 false라면 X에서 마지막 arr[i] 개의 원소를 제거한 X를 반환하는 함수를 작성해라.

 

 

예시

arr flag result
[3, 2, 4, 1, 3] [true, false, true, false, false] [3, 3, 3, 3, 4, 4, 4, 4]
728x90

 

 

나의 풀이

function solution(arr, flag) { 
  const X = [];
  
  // flag 값을 순회하며 반복
  flag.map((v, i) => {
    if( v ) {
      // arr[i] * 2번 만큼 X배열에 값을 넣어준다
      for( let j = 0; j < arr[i] * 2; j++ ) {
        X.push(arr[i]);
      }
    } else {
      // arr[i] 갯수만큼 X배열을 자른다
      X.splice(X.length - arr[i]);
    }
  });
    
  return X;
}

 

 

다른 풀이

function solution(arr, flag) {
  return arr.reduce(
    (prev, num, i) => (flag[i] ? [...prev, ...new Array(num * 2).fill(num)] : prev.slice(0, -num)),
    [],
  );
}

 

 

 

 

 

 

 

 

 

 

728x90

댓글