Algorithm/Majority Element/LeetCode 169

JIEUN YANG·2022년 10월 21일
0

과반수 요소를 구하는 문제로 배열 크기의 반 이상만큼 반복되는 엘리먼트가 답이 된다.
nums 라는 배열과 배열의 사이즈 n이 주어지고, 과반수 요소는 배열 내에 항상 존재한다고 가정.


sort(), Math.floor() 이용

var majorityElement = function(nums) {
    nums.sort();
    return nums[Math.floor(nums.length / 2)];
};
  • 주어진 배열을 sort()메서드를 이용하여 오름차순(asending) 정렬한다.
    -> 예를 들어, [4, 2, 1, 2, 2, 6]라는 배열이 주어졌을 때, [1, 2, 2, 2, 4, 6]의 순서로 정렬된다.
  • 정렬 이후, 배열의 가운데에 위치하는 element를 리턴한다. 즉, 미들 인덱스의 value가 답이 된다.
    -> middle index가 답이 되는 이유는, 정렬 이후의 array에서 majority element는 연달아 존재하며, 배열 크기의 과반수만큼 반복되기 때문에 value값이 반복되는 시작 인덱스부터 종료 인덱스까지 인덱스 번호 내에 중간 인덱스가 항상 끼어있기 때문이다.


Math.floor()

일의 자리 이하 소수는(decimal point) 버리고 정수(integer)를 리턴한다.

n이 의미하는 바가 무엇인지 제대로 읽지 않아, majority element의 의미를 짝수번만큼 반복되는 요소로 생각하고 많은 삽질(?)을 했다.
항상 문제 안에 답이 있고, 주어진 문제를 잘 읽어야 답에 좀 더 빨리 가까워지는 게 아닌가 생각하며..




참고
mdn - Math.floor

profile
violet's development note

0개의 댓글

관련 채용 정보