0은 red, 1은 white, 2는 blue를 의미한다. nums 주어지는 배열을 sort 메서드를 쓰지말고 정렬하는 문제이다. return을 해주는 것이 아니라 배열로 주어진 nums 자체를 바꿔야한다.
Input: [2,0,2,1,1,0]
Output: [0,0,1,1,2,2]
nums를 Map을 사용해서 몇개씩 나왔는지 센다. 그리고 0부터 2까지 순서대로 나온 개수만큼 nums에서 순서대로 바꿔주었다.
const sortColors = function (nums) {
const numsMap = new Map();
nums.forEach((num) => {
numsMap.set(num, 1 + (numsMap.get(num) || 0));
});
let i = 0;
[0, 1, 2].forEach((value) => {
let count = numsMap.get(value);
while (count--) {
nums[i++] = value;
}
});
};