leetcode - Partition Array According to Given Pivot

문제 설명

인덱스가 0인 정수 배열 num과 정수 피벗이 주어집니다. 다음 조건을 만족하도록 nums를 재배열합니다:

  • 피벗보다 작은 모든 요소가 피벗보다 큰 모든 요소 앞에 나타납니다.
  • 피벗과 같은 모든 요소가 피벗보다 작은 요소와 피벗보다 큰 요소 사이에 나타납니다.
  • 피벗보다 작은 요소와 피벗보다 큰 요소의 상대적 순서가 유지됩니다.

재배치 후 nums를 반환합니다.

문제 접근

fivot 보다 작은 배열, fivot 배열, fivot 보다 큰 배열을 만들어 각각 알맞은 갑들을 넣어준다.

  1. fivot 보다 작으면 left 배열에 추가
  2. fivot 과 같은면 fivotList 배열에 추가
  3. fivot 보다 크면 right 배열에 추가
  4. nums 크기 만큼 위 과정을 반복한다.
  5. 마지막에는 left, fivotList, right 배열을 합쳐 반환한다.
function solution(nums, pivot) {
  const left = [];
  const pivotList = [];
  const right = [];

  for (const value of nums) {
    if (value === pivot) {
      pivotList.push(value);
    } else if (value < pivot) {
      left.push(value);
    } else {
      right.push(value);
    }
  }

  return [...left, ...pivotList, ...right];
};