[JavaScript] Lv0 - 배열 만들기 3

Moon·2025년 1월 17일
0
post-thumbnail

배열 만들기 3

문제 설명

정수 배열 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의 길이

입출력 예

arrintervalsresult
[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 합니다.

function solution(arr, intervals) {
    // intervals에서 구간을 바로 추출
    const [[a, b], [c, d]] = intervals;

    // 두 구간을 슬라이싱하여 결합
    return [...arr.slice(a, b + 1), ...arr.slice(c, d + 1)];
}

// 입출력 예 테스트
console.log(solution([1, 2, 3, 4, 5], [[1, 3], [0, 4]])); // [2, 3, 4, 1, 2, 3, 4, 5]

코드 설명

  1. 구간 추출:
    • const [[a, b], [c, d]] = intervalsintervals 배열에서 두 구간의 시작과 끝 인덱스를 분해할당합니다.
    • a, b는 첫 번째 구간의 시작과 끝, c, d는 두 번째 구간의 시작과 끝을 나타냅니다.
  2. 구간 슬라이싱:
    • arr.slice(a, b + 1):
      • 첫 번째 구간 [a, b]에 해당하는 배열을 추출합니다.
      • b + 1을 사용하여 b 인덱스까지 포함되도록 만듭니다.
    • arr.slice(c, d + 1):
      • 두 번째 구간 [c, d]에 해당하는 배열을 추출합니다.
  3. 배열 결합:
    • [...arr.slice(a, b + 1), ...arr.slice(c, d + 1)]:
      • 스프레드 연산자(...)를 사용하여 두 구간의 배열을 하나의 배열로 결합합니다.
  4. 결과 반환:
    • 결합된 배열을 반환합니다.
profile
MOON.DEVLOG

0개의 댓글