[LeetCode] 1122. Relative Sort Array

Chobby·2025년 7월 7일
1

LeetCode

목록 보기
464/481

😎풀이

  1. arr2를 순회
    1-1. 빈도를 0으로 초기화
  2. arr1을 순회
    2-1. 각 숫자의 빈도를 기록하며, arr2에 없는 수는 따로 추출
  3. 기록된 숫자 순서대로 모두 반환하며 최종적으로 arr2에 없는 수를 오름차 순 정렬하여 병합
  4. 병합된 배열 반환
function relativeSortArray(arr1: number[], arr2: number[]): number[] {
    const result = []
    const frequent = new Map<number, number>()
    const remain = []
    for(const num of arr2) {
        frequent.set(num, 0)
    }
    for(const num of arr1) {
        if(!frequent.has(num)) remain.push(num)
        else frequent.set(num, frequent.get(num) + 1)
    }
    for(const [key, value] of frequent) {
        for(let i = 0; i < value; i++) {
            result.push(key)
        }
    }
    const remainSorted = remain.toSorted((a, b) => a - b)

    return [...result, ...remainSorted]
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글