최빈값 구하기
정수 배열이 주어질 때, 최빈값을 구해서 리턴하고 최빈값이 여러개면 -1을 리턴
nums | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
나의 풀이:
function solution(nums) {
var count = {};
for(let num of nums) {
if(num in count) {
count[num] += 1
}else {
count[num] = 1
}
}
let max_num = 0
let answer = [];
for(let num in count) {
if(count[num] > max_num) {
max_num = count[num]
answer = [num]
}else if(count[num] === max_num) {
answer.push(count[num])
}
}
return answer.length !== 1 ? -1 : parseInt(answer[0])
}
객체를 활용해서 푸는 첫번째 테스트이지 않나 싶다. 그동안 배열로만 문제를 풀어서 객체를 이용해서 푼다는 것을 잊고 있었음.
객체 count 의 키 num 을 추가하고 값에 접근 (count[num])하여 똑같은 숫자가 있으면 1씩증가, 없으면 1 이된다.
이후 최빈값을 찾기위해 (value 가 최대인 값) 객체에서 값에 접근해 최빈값을 갱신하는 식으로 작성한다.
중복된 값을 처리하기 위해 값이 같으면 최빈값에 또 다른 최빈값을 추가한다.
이후 answer 의 길이가 1이 아니면(중복값이 있다면) -1 을, 1이면 최빈값 리턴.
'프로그래머스' 카테고리의 다른 글
[알고리즘] 배열 만들기3 (0) | 2023.05.19 |
---|---|
[알고리즘] l로 만들기 (0) | 2023.05.06 |
[알고리즘] 간단한 식 계산하기 / eval() (0) | 2023.04.28 |
[알고리즘] 배열의 원소만큼 추가하기 (0) | 2023.04.28 |
[알고리즘] 가까운 1 찾기 / indexOf (0) | 2023.04.27 |