https://school.programmers.co.kr/learn/courses/30/lessons/120812
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
function solution(array) {
// array의 길이가 1일 경우 갯수가 하나이기에
// 그 값을 반환해준다.
if (array.length === 1) return array[0];
const obj = {};
const answer = [];
// array를 forEach() 반복문을 돌려
// obj에 값이 없으면 값을 만들고 1을 넣어주고
// obj에 값이 있으면 기존 값 +1을 해준다.
array.forEach((n) => {
obj[n] = ++obj[n] || 1;
});
// 값과 그 값의 갯수를 정의해 둔 obj를 array에 넣어준다.
// ex) [[1, 1], [2, 1], [3, 3], [4, 1]]
for (let key in obj) {
answer.push([key, obj[key]]);
}
// answer 배열을 갯수 기준으로 내림차순 정렬을 해준다.
// ex) [[3, 3], [4, 1], [2, 1], [1, 1]]
answer.sort((a, b) => b[1] - a[1]);
// 최빈값이 여러 개면 -1을 반환해야 하기 때문에 확인한다.
if (answer[0][1] === answer[1][1]) return -1;
// 여러개가 아니라면 정렬한 처음 값을 반환한다.
return Number(answer[0][0]);
}
[프로그래머스] 최빈값 구하기 - JavaScript | LeeJam
개발자 리잼의 코딩테스트 풀이 블로그 💻 @github.
leejams.github.io
방식은 이해는 했는데 적용이 잘 안돼서 블로그 참고 했는데
예제 답은 맞는데 테스트 실패가 있다.
최빈값 구하기(Javascript)
값을 Map()에 넣어 숫자마다 갯수를 세 주었습니다. 그리고 그 중 최대값을 인출해 주었습니다.
velog.io
function solution(array) {
let m = new Map();
for (let n of array) m.set(n, (m.get(n) || 0)+1);
m = [...m].sort((a,b)=>b[1]-a[1]);
return m.length === 1 || m[0][1] > m[1][1] ? m[0][0] : -1;
}
이 코드를 참고하여 통과했다.
레벨 0이였는데 너무 어려웠다ㅠㅠ
'코딩테스트' 카테고리의 다른 글
[ 프로그래머스 ] javascript - 올바른 괄호 (0) | 2022.11.11 |
---|---|
[프로그래머스] javascript - JadenCase 문자열 만들기 (0) | 2022.11.04 |
[ 프로그래머스 ] javascript - 멀쩡한 사각형 (0) | 2022.11.01 |
[프로그래머스] javascript - 피자 나눠 먹기 (1) (0) | 2022.10.31 |
[프로그래머스] javascript - 분수의 덧셈 (0) | 2022.10.20 |