TIL 85 l 알고리즘(숫자중에서 과반수가 넘은 숫자를 반환)

YB.J·2021년 10월 30일
1
post-thumbnail

배열 중 과반수가 넘는 숫자를 반환하는 알고리즘 문제를 풀어보자

문제

숫자로 이루어진 배열인 nums를 인자로 전달합니다. 숫자중에서 과반수(majority, more than a half)가 넘은 숫자를 반환해주세요.

예를 들어,

nums = [3,2,3]
return 3

nums = [2,2,1,1,1,2,2]
return 2

가정 : nums 배열의 길이는 무조건 2개 이상

동기들에게 받은 답과 해설

 let moreThanHalf = nums => {
  let halfOfNums = nums.sort();
  let index = Math.floor(halfOfNums.length/2);
  return halfOfNums[index];
}
 
let nums = [1,2,1,2,2,3,3,3,3,3]
console.log(moreThanHalf(nums))
  1. sort 메서드를 사용하면 배열안의 요소들이 오름차순으로 정렬된다.
  2. 배열 안에 과반수 이상으로 많은 요소가 있다면 오름차순으로 정렬될 때,
    정가운데 자리에 그 요소가 오게 된다.
  3. Math.floor(halfOfNums.length/2) : 배열의 정가운데 자리를 구하는 메서드
  4. return halfOfNums[index] : 오름차순으로 새롭게 정렬된 배열의 index 요소(정가운데 자리)를 구하면 과반수가 넘는 숫자를 반환할 수 있다
profile
♪(^∇^*) 워-후!!(^∀^*)ノシ

0개의 댓글