728x90
[코딩 기초 트레이닝] 배열의 원소만큼 추가하기
구분
코딩 테스트 연습 > 코딩 기초 트레이닝
풀이 요약
배열의 원소 수만큼 원소 개수를 늘리는 문제
나의 풀이
function solution(arr) {
let answer = [];
for (let x of arr) {
for(let i=0; i<x; i++){
answer.push(x)
}
}
return answer;
}
이중 for문을 사용해서 x의 수만큼 원소개수를 늘리는 두번째 for문이 실행되게 코드를 짰습니다.
예를 들어, arr=[2, 3] 일때,
2에 대해 내부 for문이 두 번 실행되어 2,2 가 되고 3에 대해 내부 for문이 세 번 실행되어 3,3,3 이 됩니다.
배운점
function solution(arr) {
return arr.flatMap((n) => Array(n).fill(n));
}
- 이번 문제 풀이를 통해 flatMap 메서드를 알게되었습니다. ( 다른 분이 풀이하신 답안인데 더 간결하고 가독성이 좋습니다 )
- flat은 평면화한다는 뜻으로 이중 구조를 가진 데이터를 단일 수준으로 단순화하여 펼친다는 뜻입니다.
- flatMap 메서드는 콜백함수를 실행한 결과값이 복잡한 데이터 구조를 가지고 있으면, 이를 단순화하고 처리하기 쉬운 일차원 배열 형태로 변경시켜 최종 결과값을 리턴합니다.
map 과 flatMap 의 차이
const arr = [1, 2, 3];
const mapArr = arr.map((num) => [num, num * 2]);
console.log(mapArr); // [[1, 2], [2, 4], [3, 6]]
const flatMapArr = arr.flatMap((num) => [num, num * 2]);
console.log(flatMapArr); // [1, 2, 2, 4, 3, 6]
두 함수는 사용법이 같고, 같은 원본 배열을 복사하고 콜백 함수 또한 동일하게 작성되어있습니다.
두 함수의 차이는 map 메서드는 콜백함수의 결과값이 그대로 리턴되는 반면, flatMap 메서드는 단일구조 (일차원 배열) 혹은 객체를 리턴하는 차이가 있습니다.
728x90
'코테 > 프로그래머스' 카테고리의 다른 글
[코딩 기초 트레이닝] 공백으로 구분하기 2 (0) | 2024.07.18 |
---|---|
[코딩 기초 트레이닝] rny_string (0) | 2024.07.18 |
[코딩 기초 트레이닝] 문자열 바꿔서 찾기 (0) | 2024.07.17 |
[코딩 기초 트레이닝] 공배수 (0) | 2024.07.09 |
[코딩 기초 트레이닝] n의 배수 (0) | 2024.07.09 |