JavaScript 배열 요소 빈도 기반 그룹화
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- JavaScript 초보자~중급 개발자
- 배열 조작 및 데이터 처리 기술 향상 필요
- 중간 난이도의 알고리즘 문제 해결 연습
핵심 요약
- 빈도 기반 그룹화:
Map
또는Object
를 사용해 요소의 빈도를 계산 - 결과 정렬: 빈도 기준으로 오름차순/내림차순 정렬 가능
- 핵심 코드:
Array.prototype.reduce()
와Object.entries()
활용
섹션별 세부 요약
1. 문제 정의
- 배열 내 요소의 출현 빈도를 기준으로 그룹화
- 예:
[1,2,2,3,3,3]
→{1:1, 2:2, 3:3}
2. 빈도 계산
- Map 사용 예시:
```javascript
const freqMap = arr.reduce((acc, val) => {
acc.set(val, (acc.get(val) || 0) + 1);
return acc;
}, new Map());
```
- Object 사용 예시:
```javascript
const freqObj = arr.reduce((acc, val) => {
acc[val] = (acc[val] || 0) + 1;
return acc;
}, {});
```
3. 결과 정렬
- 빈도 기준 정렬:
```javascript
const sorted = Object.entries(freqObj)
.sort((a, b) => a[1] - b[1]); // 오름차순
```
- 결과 구조:
[[값, 빈도], [값, 빈도], ...]
형식
결론
- 실무 팁:
Map
은 중복 키 처리에 효율적,Object
는 간단한 빈도 계산에 적합 - 추천:
Array.prototype.reduce()
와Object.entries()
조합 사용 - 참고: 이 문제는 DEV Community의 #JavaScript 챌린지 시리즈의 일부로, 알고리즘 연습에 유용