code-kata(Week2 - Day2)(TIL)

이해용·2022년 5월 17일
0
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개 이상

풀이

처음 진행했을 때 과반수가 없을 거라는 조건이 있을거라 생각했으나 답을 보니 예외조건이 없었다.
예외조건이 없다고 생각을 하니 답이 쉽게 나왔다.
그리고 생각한 내용은 배열을 오름차순 또는 내림차순으로 진행할 때 과반수일 경우 가운데 숫자는 무조건 과반수에 해당하는 숫자라고 생각을 했다.

  1. 오름차순으로 정리한다.
    => let a = nums.sort()
    sort() method?

  2. 중간의 수를 찾기 위해 값을 넣어준다. 이때, 배열의 길이가 홀수 일 경우 가운데 값을 넣으려면 내림을 진행해주어야 한다.
    => let b = Math.floor(a.length/2)

Math.floor()?

  1. 마지막으로 오름차순으로 진행된 a 의 배열에 b의 값을 넣어 return 해준다.
    => return a[b];

최종정리

function moreThanHalf(nums) { 
    let a = nums.sort();
    let b = Math.floor(a.length/2);
    return a[b];
}

참고 및 출처
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
https://www.w3schools.com/jsref/jsref_floor.asp

profile
프론트엔드 개발자입니다.

0개의 댓글