본문 바로가기
코테연습

92. 배열에서 각 요소 개수 세기 Javascript

by hxunz 2022. 8. 24.

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - 문자열 배열이 주어지는데, 거기서 빈도수가 높은 순으로 반환하는 함수를 작성하라. 빈도수가 같으면 사전순서대로 반환
  • 주어진 자료는 무엇인가?
     - str = 문자열이 담긴 배열

2. 계획

  • 이 문제를 푸는데 있어서 유용하게 쓸 수 있는 지식은 무엇인가?
     - 맵
  1. 주어진 배열을 set을 사용해서 맵으로 만드는데 그 과정에서 get을 사용해서 해당 요소가 맵에 있다면 +1을 해주고 그렇지 않다면 0에서 +1을 한다.
  2. 이 맵을 entries를 사용해서 정렬한다.
  3. key 값만 배열로 리턴한다.

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
const solution = (str) => {
  //문자열이 주어지는데, 거기서 빈도수가 높은 순으로 반환하는 함수를 작성하라

  let mapStr = new Map();
  for (i = 0; i < str.length; i++) {
    mapStr.set(str[i], (mapStr.get(str[i]) || 0) + 1);
  }

  const mapSort = new Map([...mapStr.entries()].sort((a, b) => b[1] - a[1]));

  return [...mapSort.keys()];
};

test('countStr', () => {
  expect(solution(['a', 'b', 'c', 'd', 'a', 'c', 'b', 'e', 'f', 'e', 'c', 'd'])).toEqual(['c', 'a', 'b', 'd', 'e', 'f']);
});

 

 

댓글