문제에 접근하는 방법은 다양하지만 Set자료형을 통해서 문제를 해결했다. Set자료형은 받은 값에서 중복된값들을 제거한
결과값을 반환해준다.
function moreThanHalf(nums) {
let answer;
const setNums = new Set(nums)
const numsObject = {}
for(let value of setNums) {
numsObject[value] = 0
}
for(let i=0; i< nums.length; i++) {
numsObject[nums[i]] += 1
}
for(let key in numsObject) {
if(numsObject[key] >= nums.length/2) {
answer = Number(key)
}
}
return answer
}
setNums라는 변수에 파라미터로 들어온 nums배열의 중복된값들을 제거한 결과를 할당해준다. numsObject라는 빈 객체를 생성하고
여기서 숫자의 개수를 카운팅할거다. 처음 for문은 setNums에 들어있는 값들을 키로 만들어서 value값은 0을 할당해줘서
초기화 시켜주는 작업이다.
다음 for문은 nums배열을 처음부터 순회하면서 그 값의 numsObject키의 vaule값을 1씩 올려준다.
이과정이 숫자가 몇개가 있는지 카운팅하는 작업이다. 그렇게 카운팅 작업이 다 끝나게되면 for...in문을 통해서 numsObject 키에
접근해서 그 value값이 nums배열의 개수의 절반보다 크거나 같으면 과반수이기 때문에 맨 위에서 선언 변수 answer에다가
값을 할당해준다.
기본적으로 객체에 키값을 넣어줄때 문자열로 처리된 상태에서 하기때문에 다시 숫자형을 변형시켜줘서 answer에다가 할당해준것이다.