대기열에 서 있는 임의의 사람들 목록이 있다고 가정합니다. 각 사람은 한 쌍의 정수(h, k)로 설명됩니다. 여기서 h는 사람의 키이고 k는 이 사람 앞에 h보다 크거나 같은 키를 가진 사람의 수입니다.
대기열을 재구성하는 알고리즘을 작성해야 합니다.
참고 − 인원이 1,100명 미만입니다.
예를 들어 − 입력 큐가 −
인 경우const arr = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]];
그런 다음 출력 큐는 -
여야 합니다.const output = [[5,0], [7,0], [5,2], [6,1], [4,4], [7,1]];
예시
이에 대한 코드는 -
const arr = [[7,0], [4,4], [7,1], [5,0], [6,1], [5,2]]; const reconstructQueue = data => { const result = []; const sorter = (a, b) => { return b[0] - a[0] || a[1] - a[1]; }; data.sort(sorter); for (let i = 0; i < data.length; i++) { result.splice(data[i][1], 0, data[i]); }; return result; }; console.log(reconstructQueue(arr));
출력
콘솔의 출력은 -
[ [ 5, 0 ], [ 7, 0 ], [ 5, 2 ], [ 6, 1 ], [ 4, 4 ], [ 7, 1 ] ]