코드카타 6일차(스스로품)

김승수·2022년 12월 27일
0

문제

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

예를 들어,

nums = [3,2,3]
return 3

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

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

풀이

function moreThanHalf(num) {
  // 여기에 코드를 작성해주세요.
  let numArr = num.sort();
  let half = Math.floor(numArr.length / 2);
  return numArr[half];
};
module.exports = { moreThanHalf };

해석

  1. num를 오름차순으로 정렬한다.
  2. num.length를 절반으로 나누고 나머지는 버린다.
  3. 절반으로 나눈값을 배열 요소 인덱스 값으로 넣으면 배열의 가운데 요소 인덱스가 된다.

후기

이번건 그냥 생각할때 그럼 반나눠서 쪼개면 되지않나 싶어서 찾아봤는데, 그전에 정렬을 해야 과반수넘는게 가운데로 올걸 알고 일단 까먹었던 정렬 함수를 찾은뒤 쪼개고 그걸 배열에 요소인덱스로 가운데로 넣는걸로했다.

생각보다 너무간단해서 테스트 통과되고 나혼자 놀랬다.
가끔은 알고리즘문제가 단순하게 생각하는게 더짧게 되고 좋은거 같다.

까먹은 함수

Arr.sort() = 오름차순 정렬

profile
외부형 확장뇌

0개의 댓글