
뜬금 생각난 팁.. 객체에선 includes가 아니라 some()을 활용하자!
function solution(array) {
// answer: 최빈값을 저장하는 변수로
// repeatCnt: 현재까지의 최대 등장 횟수를 저장하는 변수로, 초기값은 0으로 설정합니다.
// before: 이전 원소의 값입니다. 반복문에서 현재 원소와 비교하기 위해 사용됩니다.
// cnt: 현재 원소의 등장 횟수를 저장하는 변수입니다. 초기값은 0으로 설정합니다.
// isdup: 최빈값이 여러 개인지를 나타내는 플래그 변수입니다. 초기값은 false로 설정합니다.
answer = 0
repeatCnt = 0
before = 0
cnt = 0;
isdup = false
array = array.sort((a,b)=>a-b)
for( i=0;i<array.length;i++)
{
// 현재 숫자와 이전 숫자가 같지 않다면 cnt = 1
// 즉, 새로운 숫자 카운트 시작
if (before != array[i]) {
cnt=1
}
// 이전 숫자와 현재 숫자가 같으면 cnt+1
else {
cnt+=1
}
// 현재 원소의 등장 횟수가 여태 가장 컸던 반복수 크다면
if(cnt > repeatCnt){
// 현재 반복중인 원소의 반복수를 가장 컸던 반복수로 지정
repeatCnt = cnt
// 현재 역대급 반복수를 return 값으로 지정
answer = array[i]
isdup = false
}
// 현재 반복하고 있던 수가 여태 가장 컸던 반복수랑 같다는 것은
// 같은 반복수를 가졌다는 말
// 그렇기 때문에 isdup을 true로 바꿔 -1을 리턴
if(cnt==repeatCnt){
// 현재 반복값이 아까 역대급 반복수랑 같지 않다면
// 즉, 값은 다른데 반복수는 같은 경우
if(answer!==array[i])
isdup=true
}
// 인덱스값을 before에 넣어줘서
// 다음 차례 때 비교할시 활용
before = array[i]
}
if (isdup) {
return -1
}
else {
return answer;
}
}