var decompressRLElist = function(nums) {
return nums.reduce((acc, cur, idx) => {
if(idx % 2) {
for(let i=0; i<nums[idx-1]; i++) {
acc.push(cur)
}
}
return acc;
}, [])
};
생각보다 간단한 문제였다. 요구사항대로 차근차근 코드를 작성하면 된다. 간단히 요약하면
- 짝수 인덱스의 요소값은 바로 뒤에 홀수 인덱스의 요소값의 반복횟수이다.
이 조건을 코드로 작성하면된다.
var decompressRLElist = function(nums) {
return nums.reduce(
(acc, cur, i, arr) =>
i % 2 ? [...acc, ...Array(arr[i - 1]).fill(cur)] : acc,
[]
);
};
fill 메소드를 사용해서 for문을 대체할 수도 있다. 그리고 push 메소드 대신 Array 생성자를 이용해서 특정 길이의 새로운 배열을 생성해서 spread 연산자로 연결도 가능하다.