본문 바로가기
알고리즘/Codility

[Codility] Dominator (JavaScript)

by devpine 2025. 6. 14.
반응형

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

댓글