배열의 원소만큼 추가하기
문제 설명
아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.
입출력 예
arr | result |
[5, 1, 4] | [5, 5, 5, 5, 5, 1, 4, 4, 4, 4] |
[6, 6] | [6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6] |
[1] | [1] |
나의 풀이
function solution(arr) {
let answer = [];
for (const num of arr) {
answer = [...answer, ...Array(num).fill(num)]
}
return answer;
}
spread operator를 이용해서 문제를 풀었다. 원래는 concat() 메서드를 이용해서 풀고 싶었는데 이유가 무엇인지 for문 안에서 `answer.concat(Array(num).fill(num))`가 적용되지 않았다. 글을 쓰면서 다시 알아보니 concat() 메서드 기존배열을 변경하지 않고 추가된 새로운 배열을 반환한다는 특성 때문에 `answer = answer.concat(Array(num).fill(num))`로 적어야 맞는 거였다.
다른 사람의 풀이
function solution(arr) {
return arr.reduce((list, num) => [...list, ...new Array(num).fill(num)], []);
}
for문이 아닌 reduce() 메서드를 이용해서도 풀 수 있다.
'알고리즘 > Programmers' 카테고리의 다른 글
[TIL] 2023.07.27 Programmers_주사위 게임 2 (0) | 2023.07.27 |
---|---|
[TIL] 2023.07.15 Programmers_l로 만들기 (0) | 2023.07.15 |
[TIL] 2023.06.30 Programmers_간단한 식 계산하기 (0) | 2023.06.30 |
[TIL] 2023.06.22 Programmers_A 강조하기 (0) | 2023.06.22 |
[TIL] 2023.06.13 Programmers_수열과 구간 쿼리 1 (0) | 2023.06.13 |
댓글