[22.11.11] 최빈값 구하기

Heera1·2022년 11월 11일

Algorithm

목록 보기
1/8

reduce 사용하여 최빈값 구하기

사용한 메서드

.hasOwnProperty();
//객체가 특정 프로퍼티를 가지고 있는지를 boolean 값으로 반환
.Object.keys();
//순회하며 객체의 전체 키값을 받아온다.

작성한 코드

//array의 배열을 reduce로 순회한다.
	//누적값에 현잿값이 있는지 확인한다.
	//누적값에 현잿값이 있다면 누적값의 현잿값에 +1을 하고 누적값에 재할당
		//해당값이 없다면 누적값은 1이 된다.
	//초깃값을 {}로 설정하고 그곳에 담아준다.
//{}에 담긴 값을 다시 한번 reduce로 순회한다.
	//삼항 연산자를 사용해 newObject[누적값]과 newObject[현잿값]을 비교한다
	//newObject[누적값]이 newObject[현잿값] 보다 크거나 같다면
		//newObject[누적값] === newObject[현잿값]이라면 -1을 리턴
		//같지 않다면 acc를 리턴
	//newObject[누적값]이 newObject[현잿값] 보다 작다면 현잿값을 리턴
//객체에 담긴 값이 리턴되므로 Number()를 통해 숫자로 바꿔준다.

function solution(array){
	var newObject = array.reduce((acc, cur) => {
        acc.hasOwnProperty(cur) ? (acc[cur] +=1 : acc[cur] = 1);
      return acc;
}, {})
    
    var modeKey = Object.keys(newObject).reduce((acc, cur) => 
                                  newObject[acc] >= newObject[cur] ? 
                                   (newObject[acc] === newObject[cur] ? -1 : acc) : cur);
  return Number(modeKey);
profile
웹 개발자

0개의 댓글