[프로그래머스 | JS] Lv0. 배열의 원소만큼 추가하기

HICHULOG·2023년 7월 7일
0

프로그래머스

목록 보기
6/38
post-thumbnail

배열의 원소만큼 추가하기

📝 문제

아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.

⛔️ 제한 사항

  • 1 ≤ arr의 길이 ≤ 100
  • 1 ≤ arr의 원소 ≤ 100

💡 풀이

function solution(arr) {
    var x = [];
    for(let s of arr){
        for(let i=0;i<s;i++){
            x.push(s);
        }
    }
    return x;
}

=> 빈 배열에 arr 각 원소를 돌면서 각 원소의 수 만큼 빈 배열에 원소를 추가해준다.

✅ 다른 풀이

function solution(arr) {
    return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []);
}

=> arr 원소크기의 배열을 만들어 그 원소로 그 배열을 채우기. 배열을 전개하기.

function solution(arr) {
    return arr.reduce((a, c) => a.concat(Array(c).fill(c)), [])
}

=> 위와 풀이는 같고 Array.prototype.concat() 메서드를 사용해 배열을 합쳐주었다. 메서드는 인자로 주어진 배열이나 값들을 기존 배열에 합쳐서 새 배열을 반환한다.

const solution=a=>a.map(v=>Array(v).fill(v)).flat()
}

=>flat() 메서드는 모든 하위 배열 요소를 지정한 깊이까지 재귀적으로 이어붙인 새로운 배열을 생성합니다. 예를 들어 [[5,5,5,5,5],[1],[2,2]] 이 이차배열을 flat()메서드를 사용하면 [5,5,5,5,5,1,2,2]로 평탄화 시킬 수 있다.

🚀 TIL

profile
🚀 Front-end Dev

0개의 댓글