| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
Tags
- react
- TypeScript
- 리액트
- 모던 자바스크립트 딥 다이브
- next.js
- 국비지원교육
- 프론트엔드
- 이벤트
- 비전공자
- 자료구조
- 프로그래머스
- 코딩테스트
- MegabyteSchool
- 개발자취업부트캠프
- 개발 공부
- useMemo
- styled-components
- Github
- 메가바이트스쿨
- CSS
- 내일배움카드
- 패스트캠퍼스
- 알고리즘
- useRef
- JavaScript
- 자바스크립트
- 공식문서
- GIT
- 입문
- 모던 딥 다이브 자바스크립트
Archives
- Today
- Total
개발 기록 남기기✍️
[프로그래머스] 최빈값 구하기 본문
🗒️ 문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
⚠️ 제한 사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
👀 입출력 예
| array | result |
| [1, 2, 3, 3, 3, 4] | 3 |
| [1, 1, 2, 2] | -1 |
| [1] | 1 |
❇️ 나의 풀이
- 겁나 어렵다... 이게 무슨 레벨 0 문제란 말임!!! 그래서 열심히 구글링.. 또 구글링...
- 이번 문제는 배열 뿐만 아니라 객체의 속성을 잘 이해하는지를 물어보는 것 같다.
- array를 reduce 함수로 돌면서 새로운 객체를 만든다.
- 객체는 빈 객체로 시작한다.
- acc 객체가 cur라는 프로퍼티를 갖고 있다면 acc[cur]에 +=1 을 해주고, 없다면 key는 cur이고 값은 1인 프로퍼티를 생성한다. 그럼 각 배열 item의 이름으로 된 key와 해당 item 갯수 만큼의 value가 만들어진다.
- 생성된 객체의 key를 reduce 함수로 돌면서 최빈값을 추출한다.
- reduce 함수에 최초값을 작성 안하면 0부터 시작한다는 것 인지하기!
- acc의 value가 cur의 value 보다 크면 answer에 acc 할당, 만약 acc의 value가 cur의 value와 같다면 (갯수가 같다면) answer에 -1 할당, 그 외에는 answer에 cur을 할당한다.
- key는 문자형이므로, Number()로 숫자형으로 바꿔서 answer를 return한다.
function solution(array) {
const newObject = array.reduce((acc, cur) => {
acc.hasOwnProperty(cur) ? (acc[cur] += 1) : (acc[cur] = 1);
return acc;
}, {});
const answer = Object.keys(newObject).reduce((acc, cur) =>
newObject[acc] > newObject[cur] ? acc : newObject[acc] === newObject[cur] ? -1 : cur
);
return Number(answer);
}
💻 참고
🔹 https://yohanpro.com/posts/programming/mode
reduce와 lodash로 최빈값을 계산해보자 - Yohan's Developer Diary
어쩌다보니 면접을 진행하는 사람으로 들어가게 되는데, 코딩테스트를 진행하게 된다. 그 때는 보통 배열을 다루는 실력을 보게 된다. 하지만 안타깝게도 쉬운 문제이지만 제대로 해결하지 못
yohanpro.com
'코딩 테스트 연습' 카테고리의 다른 글
| [프로그래머스] 영어가 싫어요 (0) | 2022.12.30 |
|---|---|
| [프로그래머스] 컨트롤 제트 (0) | 2022.12.30 |
| [프로그래머스] 직사각형 넓이 구하기 (2) | 2022.12.30 |
| [프로그래머스] 삼각형의 완성조건 (2) (0) | 2022.12.30 |
| [프로그래머스] 가까운 수 (0) | 2022.12.29 |