► JS Algorithm/Programmers

[Programmers] JavaScript 알고리즘 | Lv.0 배열 만들기 3

다람트리 2024. 1. 16. 20:36
반응형

🔒 문제 설명

정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다.

intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다.

이때 배열 arr 번째 구간에 해당하는 배열과 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.


🔒 제한사항  

  • 1 ≤ arr의 길이 ≤ 100,000
    • 1 ≤ arr의 원소 < 100
  • 1 ≤ a1 ≤ b1 < arr의 길이
  • 1 ≤ a2 ≤ b2 < arr 길이

🔒 입출력 예

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

🔒 입출력 예 설명

입출력 예 #1

  • 첫 번째 구간에 해당하는 배열은 [2, 3, 4] 입니다.
  • 두 번째 구간에 해당하는 배열은 [1, 2, 3, 4, 5] 입니다.
  • 따라서 배열을 앞뒤로 붙인 배열인 [2, 3, 4, 1, 2, 3, 4, 5] return 합니다.

 

🔐 solution of mine

Array.map()

Array.slice()

Array.flat()

  const solution = (arr, intervals) =>
    console.log(intervals.map((v, i) => arr.slice(v[0], v[1] + 1)).flat());

  solution(
    [1, 2, 3, 4, 5],
    [
      [1, 3],
      [0, 4],
    ]
  ); // expected output: [2, 3, 4, 1, 2, 3, 4, 5]

 


 

🔐 solution of others 

구조분해할당

Array.slice()

  const solution = (arr, intervals) => {
    const [[a, b], [c, d]] = intervals;
    return console.log([...arr.slice(a, b + 1), ...arr.slice(c, d + 2)]);
  };

  solution(
    [1, 2, 3, 4, 5],
    [
      [1, 3],
      [0, 4],
    ]
  ); // expected output: [2, 3, 4, 1, 2, 3, 4, 5]

 


 

반응형