알고리즘/코드카타

Week2 - Day2 (Javascript)

시럽이 2022. 7. 14. 16:15

문제

숫자로 이루어진 배열인 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

  1. nums 배열에서 for문으로 각각의 요소가 중복인지 확인한다.
  2. split("")을 해야하나, map객체를 써야하나, set객체를 써야하나, filter를 써야하나 고민...
  3. 과반수가 넘어야 하기 때문에 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