[TIL]Code Kata Week2 Day2
문제
숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.
예를 들어,
nums = [3,2,3]
return 3
nums = [2,2,1,1,1,2,2]
return 2
가정
nums 배열의 길이는 무조건 2개 이상
filter()
메서드는 주어진 함수의 테스트를 통과하는 모든 요소를 모아 새로운 배열로 반환합니다.
처음문제를 보고 딱 떠오르는 점은 배열안에 더 많은 수를 찾는가 였다.그런데 문제를 다시 읽어보고 천천히 풀어보려 하니 배열 길이의 과반수가 넘어야 한다는 중요한 점을 찾게 되었다. 일단 접근한 방법으로는 배열의 요소를 같은 숫자들끼리 모아 몇개가 있는지 비교를 해주는 것이었다.비교를 한 후 더 많은 요소를 nums의 length를 나누기 2를 해서 비교하려고 했으나 중간에 요소들끼리 갯수를 비교하는 로직이 한번 더 들어가기 때문에 filter
메서드를 검색해서 찾게 되었다.
메서드의 특징은 조건이 참 일 때만 요소를 배열로 반환해 주는 것이다.그럼 불필요하게 배열의 요소들끼리 비교할 필요가 사라지고 바로 배열의길이와 비교를 해주면 끝나는 것이다.
function moreThanHalf(nums) {
// 여기에 코드를 작성해주세요.
for(let i=0; i<nums.length; i++){
if(nums.filter( e => e === nums[i]).length > (nums.length / 2)) {
return nums[i]
}
}
}
console.log(moreThanHalf([1,1,1,1,3,3,3]))
Author And Source
이 문제에 관하여([TIL]Code Kata Week2 Day2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@dev_marco/TILCode-Kata-Week2-Day2저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)