Codility Java Dominator
업데이트:
문제
코드
// you can also use imports, for example:
// import java.util.*;
// you can write to stdout for debugging purposes, e.g.
// System.out.println("this is a debug message");
import java.util.Map;
import java.util.HashMap;
class Solution {
public int solution(int[] A) {
Map<Integer, Integer> map = new HashMap<>();
// Calculate how many numbers are in the array(A).
for (int num : A) {
map.put(num, map.getOrDefault(num, 0) + 1);
}
int num = 0;
int max = 0;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() > max) {
num = entry.getKey();
max = entry.getValue();
}
}
// If not half of array(A)'s size, return -1.
if (max <= A.length / 2) {
return -1;
}
// Find index of num.
for (int idx = 0; idx < A.length; idx++) {
if (A[idx] == num) {
return idx;
}
}
return -1;
}
}
설명
- 주어진 배열 A에 들어간 숫자가 몇 번 반복되었는지를 계산하기 위해 Map을 사용한다.
- 주어진 배열 A를 반복하여 변수 map에 숫자를 key로 반복 횟수를 value로 증가시켜준다.
- 변수 map에서 가장 많이 반복된 숫자와 개수를 가져온다.
- 만일 주어진 배열 A 크기의 절반보다 작은 경우 -1을 주어진 문제의 결과로 반환한다.
- 주어진 배열 A에서 가장 많이 반복된 숫자의 index를 주어진 문제의 결과로 반환한다.
결과
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기