eatthefrog

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

코딩테스트

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

eater_forg 2025. 5. 1. 13:03

배열 만들기 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()을 배우고,
  • 배열 안 배열을 다룰 땐 어떤 메서드가 필요한지 감각이 생김