숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,nums = [3,2,3] return 3 nums = [2,2,1,1,1,2,2] return 2
가정
nums 배열의 길이는 무조건 2개 이상
foreach()
reduce()
map()
을 이용해서 요소와 요소의 개수를 빈 객체 담을 수 있다. 그렇지만, 보다 쉬운방법이 있을 것 같다. function moreThanHalf(nums) {
for (let i=0; i<nums.length; i++) {
if (nums.filter(el => el === nums[i]).length > (nums.length / 2)) {
return nums[i]
}
}
}
for
문을 이용하여 배열의 요소에 접근한다.
filter
함수를 이용해서 한 종류의 요소들만 모아주고, 그 배열의 길이를 구한다.
만약 그 길이가 전체 길이의 1/2 즉, 과반수가 넘는다면 그 요소를 반환하면된다.
이 문제는 과반수
라는 단어에 집중하였으면 쉽게 풀었을 것 같다.
filter
함수를 이용하여 한 종류의 요소들만 모을 수 있었다.
배열의 개수
를 배열의 길이
로 변환할 수만 있으면 쉽게 풀리는 문제였다.
문제에서 묻고자 하는 것을 잘 캐치하자.