
😎풀이
arr2
를 순회
1-1. 빈도를 0으로 초기화
arr1
을 순회
2-1. 각 숫자의 빈도를 기록하며, arr2
에 없는 수는 따로 추출
- 기록된 숫자 순서대로 모두 반환하며 최종적으로
arr2
에 없는 수를 오름차 순 정렬하여 병합
- 병합된 배열 반환
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]
};