학습 공간 개념 · 판단 · 실험

Fanta Lab

질문 193 · 구현 연습

Array.prototype.flat의 제한된 학습용 버전을 직접 구현한다면 어떤 가정을 세우고 어떻게 작성하나요?

이렇게 답해 보세요 (핵심 답변)

먼저 '일반 배열 입력과 0 이상의 정수 depth(기본값 1)만 지원하고 원본을 바꾸지 않는 새 배열을 반환한다'고 입력 가정과 경계를 명확히 밝힙니다. 그다음 배열을 순서대로 순회하며 !(i in array)로 빈 슬롯(Hole)은 건너뛰고, 현재 값이 Array.isArray이면서 남은 depth가 양수이면 depth - 1로 재귀 평탄화한 결과를 이어 붙이고 아니면 그대로 추가합니다. 네이티브 flat의 Infinity 변환, 유사 배열, species 처리까지는 범위 밖임을 함께 덧붙입니다.

함께 설명하면 좋은 이유 (꼬리질문 대비)

  1. 원본 배열을 직접 수정(mutate)하지 않고 새로운 결과 배열을 만들어 반환해야 불변성 계약을 지킬 수 있습니다.
  2. 중첩 깊이가 매우 깊은 입력에서는 재귀 호출이 콜 스택 한도를 넘을 수 있으므로 필요시 명시적 스택 반복문으로 전환할 수 있습니다.

면접에서 자주 하는 실수

JSON 문자열 치환을 쓰거나 depth 조건 없이 무조건 끝까지 다 펼치는 코드는 flat(depth)의 동작 계약과 다릅니다.

원리와 예제까지 읽기

공식 참고 자료

질문 목록 출처 ↗ · 원본 193번을 바탕으로 질문과 답변을 새로 정리했습니다.

← 알고리즘 · 자료구조