문제
숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
가정
nums 배열의 길이는 무조건 2개 이상
내 Flow
- nums 배열에서 for문으로 각각의 요소가 중복인지 확인한다.
- split("")을 해야하나, map객체를 써야하나, set객체를 써야하나, filter를 써야하나 고민...
- 과반수가 넘어야 하기 때문에 nums 배열을 2로 나눈 것보다 length가 더 많아야 한다.
풀이
function moreThanHalf(nums) {
// 여기에 코드를 작성해주세요.
for (let i=0; i<nums.length; i++) {
let filtering = nums.filter(item => item === nums[i]);
if(filtering.length > nums.length / 2) {
return filtering[i];
}
}
}
💬 filter() 메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환하며, map() 메서드는 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환한다.
참고
MDN https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
MDN https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/map
'알고리즘 > 코드카타' 카테고리의 다른 글
Week2 - Day4 (Javascript) (0) | 2022.07.15 |
---|---|
Week2 - Day3 (Javascript) (0) | 2022.07.14 |
Week2 - Day1 (Javascript) (0) | 2022.07.11 |
Week1 - Day5 (Javascript) (0) | 2022.07.07 |
Week1 - Day3 (Javascript) (0) | 2022.07.06 |