[LeetCode] sortColors JavaScript

ansrjsdn·2020년 6월 29일
0

알고리즘

목록 보기
34/39

문제

https://leetcode.com/explore/featured/card/june-leetcoding-challenge/540/week-2-june-8th-june-14th/3357/

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;
    }
  });
};
profile
프론트 공부를 열심히 하고 있는 대학생 개발자입니다.

0개의 댓글