숫자 배열 nums가 주어질 때 nums의 최댓값은 중복없이 딱 한개 있다고 한다
이 때 최댓값이 nums의 다른 숫자들보다 최소 두배 이상이면 최댓값의 인덱스를 리턴하고 하나라도 아니라면 -1을 리턴하는 문제이다
Example 을 보자
최댓값은 유니크하게 1개만 존재하고 문제의 요지는 최댓값이 다른 숫자들의 2배이상인지를 체크하는 것이다
이말은 즉 다른 숫자들은 최댓값 / 2 보다 크면 안된다는 말이고 만약 하나라도 나온다면 바로 -1을 리턴하기로 했다
const dominantIndex = function(nums) {
const halfMax = Math.floor(Math.max(...nums) / 2);
const index = nums.indexOf(Math.max(...nums))
nums.splice(index,1);
for(let i = 0; i < nums.length; i++) {
if(nums[i] > halfMax) {
return -1;
}
}
return index
};
먼저 최댓값의 절반을 구해주었고 최댓값의 인덱스 값도 따로 할당을 해두고
nums에서 최댓값을 빼준 상태로 for문을 돌았다
만약 최댓값의 절반 값보다 큰 값이 나온다면 -1을 리턴하고 for 문이 무사히 다 돌면 index값을 리턴했다
submit을 해보니
정답이었다!