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
- Web
- 내밥줄지켜
- 프로그래밍
- 밀러컬럼
- 블레이버스
- AI에게서 살아남기
- pccp
- 개발자
- 밥줄지키기프로젝트
- frontend
- 회사
- 30대까지이루기
- 개발
- 자바스크립트
- 신입
- 타입스크립트
- 코딩
- 코딩테스트
- #유데미 #udemy #웅진씽크빅 #스나이퍼팩토리 #인사이드아웃 #미래내일일경험 #프로젝트캠프 #부트캠프 #react #next.js #프론트엔드개발자양성과정 #개발자교육과정
- 프로그래머스
- 웹개발
- 파킨슨병
- 백엔드
- 새복많
- javascript
- react
- Next
- 2026
- js
- 프론트엔드
Archives
- Today
- Total
낭 만 당
프로그래머스 Lv:0 최빈값 구하기 본문
최빈값 구하기
이 문서는 JavaScript로 최빈값을 구하는 문제를 해결하는 과정을 설명한다. 최빈값은 데이터에서 가장 자주 나타나는 값을 의미하고, 주어진 문제의 조건과 제한사항을 바탕으로 최적의 알고리즘을 구현한다.
문제 설명
- 정수 배열
array가 매개변수로 주어짐. - 최빈값을 계산하여 반환하기
- 최빈값이 여러 개라면
-1을 반환. - 제한사항:
0 < array.length < 1000 ≤ array[i] < 1000
입출력 예
| 입력 배열 (array) | 출력값 (result) |
|---|---|
| [1, 2, 3, 3, 3, 4] | 3 |
| [1, 1, 2, 2] | -1 |
| [1] | 1 |
문제를 해결하는 과정
- 빈도 계산: 배열의 각 요소가 몇 번 등장했는지를 객체를 사용하여 기록한다.
- 최빈값 찾기: 빈도가 가장 높은 값을 찾고, 그 값이 유일한지 확인한다.
- 조건 처리: 최빈값이 유일하면 그 값을 반환하고, 여러 개라면
-1을 반환한다.
사용된 문법 설명
for ... of: 배열의 요소를 하나씩 순회하는 반복문.Object.entries(): 객체의 키-값 쌍을 배열 형태로 반환하는 메서드.삼항 연산자:조건 ? 참일 때 값 : 거짓일 때 값형태로 사용.parseInt(): 문자열을 정수로 변환하는 함수.
알고리즘 구현
function solution(array) {
// Step 1: 빈도 계산
const frequencyMap = {};
for (const num of array) {
frequencyMap[num] = (frequencyMap[num] || 0) + 1;
}
// Step 2: 최빈값 및 최대 빈도 찾기
let maxFrequency = 0;
let mode = -1;
let isUnique = true; // 최빈값이 유일한지 확인
for (const [num, frequency] of Object.entries(frequencyMap)) {
if (frequency > maxFrequency) {
maxFrequency = frequency;
mode = parseInt(num);
isUnique = true; // 새로운 최빈값 갱신
} else if (frequency === maxFrequency) {
isUnique = false; // 최빈값이 여러 개일 경우
}
}
// Step 3: 결과 반환
return isUnique ? mode : -1;
}
테스트 케이스
console.log(solution([1, 2, 3, 3, 3, 4])); // 3
console.log(solution([1, 1, 2, 2])); // -1
console.log(solution([1])); // 1
결론
위 코드는 시간 복잡도 O(n)으로 효율적으로 동작한다⭐ 배열을 한 번 순회하여 빈도를 계산하고, 객체를 순회하여 최빈값을 찾습니다. 이 알고리즘은 문제의 제한사항 내에서 빠르게 작동하며, 최적화된 방법론을 따른다.
'Programming Record' 카테고리의 다른 글
| 프로그래머스 Lv1 수박수박수~ 문제 풀기와 코드의 변화 (1) | 2025.07.16 |
|---|---|
| 프로그래머스 Lv 1 - 하샤드 수 (JavaScript) (1) | 2025.07.07 |
| 웹 성능 최적화 기법: chapter3 웹 사이트 성능을 개선하는 기본적인 방법 (1) | 2024.11.30 |
| 웹 성능 최적화 기법: chapter2 웹 최적화 (7) | 2024.11.26 |
| [Study] Clean Code: Week 1 (4) | 2024.10.16 |