Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스택
- 프론트엔드
- 브라우저
- 배열
- alexnet
- 코딩테스트
- RxJS
- 이진탐색
- 큐
- 자료구조
- cors
- 연결 리스트
- 자바스크립트
- 연결리스트
- 컨테이너
- 릿코드
- GraphQL
- 알고리즘
- 웹팩
- APOLLO
- 프로세스
- vue3
- Machine Learning
- pytorch
- C
- 포인터
- 프로그래머스
- 해시테이블
- 타입스크립트
- RT scheduling
Archives
- Today
- Total
프린세스 다이어리
자바스크립트 가장 자주 등장하는 숫자 문제 본문
728x90
문제
nums는 숫자로 이루어진 배열입니다. 가장 자주 등장한 숫자를 k 개수만큼 return해주세요.
예시
nums = [1,1,1,2,2,3], k = 2
return [1,2]
nums = [1], k = 1
return [1]
접근방향
문제에 최대 nums의 길이나 k의 범위가 제시되어 있지 않아 key를 이용해 상수 시간 복잡도로 접근할 수 있도록 object을 활용하여 풀었다. 마지막에 Object.keys를 활용하여 정렬을 할 때, string 자료형으로 배열에 들어가기 때문에 map함수로 number 형으로 바꿔주는 것에 유의한다.
해답
function topK(nums, k) {
let obj = {};
for (let i = 0; i < nums.length; i++) {
if (nums[i] in obj) {
obj[nums[i]]++;
} else {
obj[nums[i]] = 1;
}
}
let answer = [];
answer = Object.keys(obj).sort((a, b) => obj[b] - obj[a]);
return answer.slice(0, k).map(num => +num);
}
728x90
'자료구조, 알고리즘' 카테고리의 다른 글
자바스크립트로 해시테이블 구현하는 방법 (0) | 2021.11.13 |
---|---|
[프로그래머스] 여행경로 문제 자바스크립트 풀이 (0) | 2021.11.09 |
[백준] 단지번호 붙이기 문제 자바스크립트 풀이 - BFS (0) | 2021.11.05 |
[백준] 미로 탐색 문제 자바스크립트 풀이 - BFS (0) | 2021.11.04 |
[프로그래머스] H-index 문제 자바스크립트 풀이 (0) | 2021.11.02 |
Comments