1. 문제에 대한 이해
- 우리가 풀어야 할 문제는 무엇인가?
- 문자열 배열이 주어지는데, 거기서 빈도수가 높은 순으로 반환하는 함수를 작성하라. 빈도수가 같으면 사전순서대로 반환 - 주어진 자료는 무엇인가?
- str = 문자열이 담긴 배열
2. 계획
- 이 문제를 푸는데 있어서 유용하게 쓸 수 있는 지식은 무엇인가?
- 맵
- 주어진 배열을 set을 사용해서 맵으로 만드는데 그 과정에서 get을 사용해서 해당 요소가 맵에 있다면 +1을 해주고 그렇지 않다면 0에서 +1을 한다.
- 이 맵을 entries를 사용해서 정렬한다.
- 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']);
});
'코테연습' 카테고리의 다른 글
94. 이것이 코딩 테스트다 4장 : 상하좌우 Javascript (0) | 2022.08.30 |
---|---|
93. 배열에 중복된 요소가 있는지 확인하기 Javascript (0) | 2022.08.25 |
91. [1차] 뉴스 클러스터링 Javascript (0) | 2022.08.23 |
90. 후보키 Javascript (0) | 2022.08.23 |
89. 두 큐 합 같게 만들기 Javascript (0) | 2022.08.23 |
댓글