반응형
https://app.codility.com/programmers/lessons/8-leader/dominator/
Dominator coding task - Learn to Code - Codility
Find an index of an array such that its value occurs at more than half of indices in the array.
app.codility.com
문제:
주어진 배열 중 절반 이상 등장한 원소가 있다면, 해당 원소의 인덱스를 반환. 없다면 -1 반환.
내 풀이:
/**
* 배열 A의 원소 중 개수가 절반 이상인 원소, 즉 지배 원소가 존재하는지 검증
*
* @params {number[]} A - 배열 A
* @returns {number} 리더 원소 존재 여부
*/
function solution(A) {
let size = 0, value;
// 1. 후보 추출 (Boyer-Moore Majority Vote Algorithm)
for (let i = 0; i < A.length; i++) {
if (size === 0) {
size = 1;
value = A[i];
} else {
size += A[i] === value ? 1 : -1;
}
}
// 2. 후보가 과반수인지 검증
let count = 0;
for (let i = 0; i < A.length; i++) {
if (A[i] === value) count++;
}
return (count > A.length / 2) ? A.indexOf(value) : -1;
}
- 채점결과: 100%
반응형
'알고리즘 > Codility' 카테고리의 다른 글
[Codility] Fishes (JavaScript) (0) | 2025.06.14 |
---|---|
[Codility] Brackets (JavaScript) (0) | 2025.06.14 |
[Codility] GenomicRangeQuery (JavaScript) (0) | 2025.06.14 |
[Codility] Count Divs (JavaScript) (0) | 2025.06.14 |
[Codility] Passing Cars (JavaScript) (0) | 2025.06.14 |
댓글