오랜만에 javascript로 코테 공부를 해봤는데, 다른 사람의 답안을 보고 모르는게 있어서 기록한 글

프로그래머스 문제


입출력 예

arr intervals result
[1, 2, 3, 4, 5] [[1, 3], [0, 4]] [2, 3, 4, 1, 2, 3, 4, 5]

나의 답안

// 이중 for문
function solution(arr, intervals) {
  const result = [];

  for (let i = 0; i < intervals.length; i++) {
    const [first, last] = intervals[i];

    for (let j = first; j <= last; j++) {
      result.push(arr[j]);
    }
  }

  return result;
}

// ES10 사용
function solution(arr, intervals) {
  let result = [];

  for (let i = 0; i < intervals.length; i++) {
    result.push(arr.slice(intervals[i][0], intervals[i][1] + 1));
  }

  return result.flat();
}

flat()

  • ES10 (ECMAScript 2019) 에서 도입된 메서드
  • 중첩된 배열을 펼치는 함수로 한단계만 평탄화한다
  • 더 깊은 중첩의 경우 flat(depth) 형태로 깊이를 지정 가능

다른 사람의 답안

function solution(arr, intervals) {
  return intervals.flatMap((ints) => [...arr.slice(ints[0], ints[1] + 1)]);
}

flatMap()

  • ES10 (ECMAScript 2019) 에서 도입된 메서드
  • map()과 flat() 두가지 함수를 한번에 수행한다

댓글남기기