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
'🧬알고리즘 > Programmers' 카테고리의 다른 글
[JavaScript] 문자열 묶기 (0) | 2024.06.17 |
---|---|
[JavaScript] 배열 비교하기 (0) | 2024.06.17 |
[JavaScript] 배열의 원소만큼 추가하기 (2) | 2024.06.14 |
[JavaScript] 세 개의 구분자 (0) | 2024.06.14 |
[JavaScript] 문자열 바꿔서 찾기 (1) | 2024.06.13 |
댓글