eatthefrog
코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(2) 본문

배열 만들기 3
function solution(arr, intervals) {
const result = intervals
.map(([start, end]) => arr.slice(start, end + 1))
.flat();
return result;
}
| 문법 | 핵심 기능 | 이 문제에서의 역할 |
| map() | 배열의 각 요소를 순회하며, 변환한 결과로 새로운 배열을 반환한다. | 구간마다 slice 실행 |
| 구조 분해 할당 | 배열 요소를 개별 변수로 추출 | [start, end] 형태 분해 |
| flat() | 중첩 배열을 펼침 | [ [1,2], [3,4] ] → [1,2,3,4] |
내가 부족했던 부분 : map과 구조분해 할당 사용하기
✅ 기본적인 map()구조 복습
arr.map((value, index, array) => {
// value: 현재 요소
// index: 현재 인덱스
// array: 원본 배열
})
✅ 근데,이 코드에서 start,end가 각각 현재값과 인덱스를 가리키는건지 헷갈렸다.
intervals.map(([start, end]) => arr.slice(start, end + 1))
여기서 ([start,end])는 구조분해할당을 이용해서 value를 start와 end두 변수로 나눠서 받는것이다.
예를 들어,
const intervals = [[1, 3], [5, 6]];
이 경우에서 map()을 쓸 때:
- 첫 번째 순회: value = [1, 3] → 구조 분해로 start = 1, end = 3
- 두 번째 순회: value = [5, 6] → 구조 분해로 start = 5, end = 6
즉, 아래 처럼 정리할 수 있다.
intervals.map(([start, end], index, array) => {
// start와 end는 각각 [1, 3] 혹은 [5, 6]에서 꺼낸 값
})
배열 만들기1
function solution(n, k) {
return Array.from({ length: n }, (_, i) => i + 1).filter(x => x % k === 0);
}
| Array.from() | 동적 길이의 배열 생성 및 초기화에 유용함 |
| 구조분해할당 (_, i) | 사용하지 않는 첫 번째 인자(배열 요소)를 무시하고, 두 번째 인자(인덱스)를 활용함 |
| .filter() | 특정 조건을 만족하는 요소만 남기는 고차함수 |
| 체이닝 | 메서드를 이어 쓰는 패턴으로, 깔끔하고 간결한 코드 구현에 유리 |
function solution(n, k) {
let answer = [];
for (let i = 1; i <= n; i++) {
if (i % k === 0) {
answer.push(i);
}
}
return answer;
}
✅ 내가 잘한 점
1. 의사코드로 문제를 구조화하는 습관
- 문제를 읽고 직접 입력, 출력, 사용할 문법, 의사코드로 구조화한 점
- 초급 단계를 넘어서 "문제를 사고로 해결하는 개발자"로 가는 가장 중요한 습관
2. for문과 map 등의 반복문법에 대한 적극적 시도
- for, map, filter 등 여러 방법을 시도해보면서 적절한 방식이 무엇인지 고민했어. 이는 단순한 정답 외에도 다양한 풀이법을 비교할 수 있는 능력으로 이어짐
🎯 오늘 내가 문제풀이를 통해 얻게 된 점
1. "map"과 "for"의 쓰임새 차이를 체감함
- 같은 문제도 for와 map으로 풀 수 있다는 걸 실습하며 느꼈고,
- 특히 map은 리턴 값이 필요할 때 유용하다는 구조적 차이를 알게 됨
- 단순 반복은 for, 배열 변환은 map이라는 판단 기준이 생긴 것
2. 구조 분해 할당의 실전 감각
- [[a, b], [c, d]] 같은 구조에서 const [start, end] = interval로 값을 꺼내는 방식,
- 평소 생소하게 느껴졌던 구조 분해 할당이 실제 문제에 적용되는 걸 보고 이해가 더 깊어짐
3. flat() 메서드의 필요성과 쓰임새
- [[1,2],[3,4]] → [1,2,3,4]처럼 다차원 배열을 납작하게 펴주는 flat()을 배우고,
- 배열 안 배열을 다룰 땐 어떤 메서드가 필요한지 감각이 생김
'코딩테스트' 카테고리의 다른 글
| 코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(3) (0) | 2025.05.08 |
|---|---|
| 코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(2) (0) | 2025.05.02 |
| 코딩테스트자바스크립트 코딩 테스트: 배열 기초 문제(1) (0) | 2025.04.30 |
| 자바스크립트 코딩 테스트: 배열 입문 문제(2) (1) | 2025.04.26 |
| 자바스크립트 코딩 테스트: 배열 원소의 길이 (1) | 2025.04.22 |