문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 유형
Map, 정렬
문제 풀이
처음에 보자마자 떠오른 방식은 1000개짜리 배열을 만들어서 매개변수 array의 각 요소에 해당하는 인덱스 자리에 카운팅을 해주는 것이었다. 하지만 이는 테스트 케이스에 따라 1000개짜리 배열을 생성하면서 사용하지 않는 메모리가 많을 수도 있겠다는 생각이 들었다. 다른 방법을 떠올리던 중 이전에 풀었던 top K Frequent element 가 생각났고, 해당 풀이를 참고하여 풀었다.
1. Map 객체를 만들고, array를 순회하며 Map에 각 숫자가 나온 횟수를 저장한다.
2. Map의 키 값(array의 요소)들을 스프레드 문법으로 배열로 만들고, 각각의 value를 기준으로 내림차순으로 정렬한다.
3. 첫 번째 요소의 value(배열 내 해당 요소의 개수)가 다음 요소의 value와 같다면 최빈값이 여러개이므로 -1을 반환하고, 아니면 해당 숫자를 반환한다.
코드
function solution(array) {
const map = new Map();
array.forEach((num) => {
map.set(num, map.get(num) + 1 || 1);
})
const modeNum = [...map.keys()].sort((a, b) => map.get(b) - map.get(a));
return map.get(modeNum[0]) === map.get(modeNum[1]) ? -1 : modeNum[0];
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 뒤에 있는 큰 수 찾기 JavaScript (0) | 2023.01.27 |
---|---|
[프로그래머스] 숫자 짝꿍 JavaScript (0) | 2022.10.08 |
[프로그래머스] 두 큐 합 같게 만들기 JavaScript (1) | 2022.09.26 |
[프로그래머스] 게임 맵 최단거리 JavaScript (0) | 2022.08.26 |
[프로그래머스] 타겟 넘버 JavaScript (0) | 2022.08.23 |
문제 링크
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 유형
Map, 정렬
문제 풀이
처음에 보자마자 떠오른 방식은 1000개짜리 배열을 만들어서 매개변수 array의 각 요소에 해당하는 인덱스 자리에 카운팅을 해주는 것이었다. 하지만 이는 테스트 케이스에 따라 1000개짜리 배열을 생성하면서 사용하지 않는 메모리가 많을 수도 있겠다는 생각이 들었다. 다른 방법을 떠올리던 중 이전에 풀었던 top K Frequent element 가 생각났고, 해당 풀이를 참고하여 풀었다.
1. Map 객체를 만들고, array를 순회하며 Map에 각 숫자가 나온 횟수를 저장한다.
2. Map의 키 값(array의 요소)들을 스프레드 문법으로 배열로 만들고, 각각의 value를 기준으로 내림차순으로 정렬한다.
3. 첫 번째 요소의 value(배열 내 해당 요소의 개수)가 다음 요소의 value와 같다면 최빈값이 여러개이므로 -1을 반환하고, 아니면 해당 숫자를 반환한다.
코드
function solution(array) {
const map = new Map();
array.forEach((num) => {
map.set(num, map.get(num) + 1 || 1);
})
const modeNum = [...map.keys()].sort((a, b) => map.get(b) - map.get(a));
return map.get(modeNum[0]) === map.get(modeNum[1]) ? -1 : modeNum[0];
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 뒤에 있는 큰 수 찾기 JavaScript (0) | 2023.01.27 |
---|---|
[프로그래머스] 숫자 짝꿍 JavaScript (0) | 2022.10.08 |
[프로그래머스] 두 큐 합 같게 만들기 JavaScript (1) | 2022.09.26 |
[프로그래머스] 게임 맵 최단거리 JavaScript (0) | 2022.08.26 |
[프로그래머스] 타겟 넘버 JavaScript (0) | 2022.08.23 |