-
Lesson8. Leader - DominatorAlgorithm/codility 2018. 7. 24. 16:00
Dominator - Find an index of an array such that its value occurs at more than half of indices in the array.
https://app.codility.com/programmers/lessons/8-leader/dominator/
문제요약
N개의 정수 배열 A가 주어지고 A에서 A의 길이의 절반보다 많이 등장하는 수를 dominator라고 한다. A의 dominator의 index 중 하나를 반환하거나 없으면 -1을 반환한다.Assume that:
N is an integer within the range [0..100,000];
each element of array A is an integer within the range [−2,147,483,648..2,147,483,647].
For example, given array A such that
A[0] = 3 A[1] = 4 A[2] = 3
A[3] = 2 A[4] = 3 A[5] = -1
A[6] = 3 A[7] = 3
the function may return 0, 2, 4, 6 or 7, as explained above.
Complexity:
expected worst-case time complexity is O(N);
expected worst-case space complexity is O(1) (not counting the storage required for input arguments).
풀이
A의 각각에 대해 dictionary에 해당 수의 개수를 counting하면서 A의 절반보다 큰 경우에 해당 index를 반환한다. 전체를 다 처리하고 반환되지 않은 경우는 존재하지 않는 경우로 -1을 반환한다.