728x90
자바스크립트 배열 메소드를 능수능란하게 쓸 수 있는 실력이 아닌 상태에서 순수 조건문으로만 풀려고 하니
따져야 할게 많았다
1. array.sort((a,b)=>a-b)를 통해 오름차순 정렬 후
2. 배열 처음부터 돌면서 숫자가 바뀔때, 같은 수가 반복될때로 이렇게 두가지 경우로 나누어 생각
2-1. 숫자가 바뀔때
지금 있는 위치의 반복 수 1로 세팅
2-2. 같은 수가 반복되고 있을 때
지금 있는 위치의 반복 수 증가
3. 최빈값의 반복수보다 지금 있는 위치의 숫자 반복수가 더 크다면 최빈값과 최빈값의 반복수 업데이트 필요
4. 최빈값이 여러개인 경우를 알려주는 변수를 하나 추가해서 여러개 나오는 경우 체크해주기
answer//최빈값
repeatCnt//최빈값의 반복수
before//지금 있는 위치의 이전수
cnt//지금 있는 위치의 숫자 반복수
isdup//최빈값이 중복될 경우를 알려주는 boolean
function solution(array) {
var answer = -1,repeatCnt=0,before=-1,cnt=0;
var isdup=false
array=array.sort((a,b)=>a-b)
for(var i=0;i<array.length;i++)
{
if(before!=array[i])
cnt=1
else
cnt+=1
if(cnt==repeatCnt){
if(answer!==array[i])
isdup=true
}
if(cnt>repeatCnt){
repeatCnt=cnt
answer=array[i]
isdup=false
}
before=array[i]
}
if(isdup)
return -1
return answer;
}
728x90