숫자로 이루어진 배열에서 과반수가 넘는 숫자를 반환하는 문제이다. 객체를 통해 숫자마다의
key
와value
를 이루어 준 후 그 중 가장 빈도수가 높은 key 값을 리턴해주기로 했다.
function moreThanHalf(nums) {
// 여기에 코드를 작성해주세요.
let newDic={} // 숫자 : 빈도수 를 객체에 담아줌.
let max=0; // 빈도수 비교를 위한 상수
let majority; // 최종 리턴값
for (let i in nums){ // 객체 할당 과정
if (newDic[nums[i]]===undefined){
newDic[nums[i]]=1
}
else{
newDic[nums[i]]+=1
}
}
for (let key in newDic){ // key value 값에 따라 value가 최대인 key값을 저장.
if (max<newDic[key]){
max=newDic[key]
majority=key
}
}
return Number(majority) // 문자열을 숫자형으로 변환후 리턴
}
느낀 점
객체의 성질을 이용하여 문제를 풀었다. 문제를 풀 때 직관적으로 논리의 흐름을 따라 푸는 편인데 다른 풀이들을 보면서 다른 방법들도 내 방법으로 흡수하는 습관을 들이도록 노력해야겠다. 변하고 또 변화해서 성장하는 게 개발자의 덕목이라고 들었기 때문이다.