문제 설명
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
제한사항
- 0 < array의 길이 < 100
- 0 ≤ array의 원소 < 1000
입출력 예
array | result |
[1, 2, 3, 3, 3, 4] | 3 |
[1, 1, 2, 2] | -1 |
[1] | 1 |
입출력 예 설명
입출력 예 #1
- [1, 2, 3, 3, 3, 4]에서 1은 1개 2는 1개 3은 3개 4는 1개로 최빈값은 3입니다.
입출력 예 #2
- [1, 1, 2, 2]에서 1은 2개 2는 2개로 최빈값이 1, 2입니다. 최빈값이 여러 개이므로 -1을 return 합니다.
입출력 예 #3
- [1]에는 1만 있으므로 최빈값은 1입니다.
나의 문제 풀이
function solution(array) {
const answer ={} // answer이라는 빈 객체를 생성하였습니다.
for(let i=0; i<array.length; i++){ // 반복문을 통해서 array의 요소를 순회합니다.
if(!answer[array[i]]){ // 만약 answer객체에 array[i] key로 값이 없다면
answer[array[i]] =1 // answer 객체에 array[i]를 키 값으로 1을 지정해줍니다.
}else{ // // 만약 answer객체에 array[i] key로 값이 존재한다면
answer[array[i]]++ //1을 증가시켜줍니다.
}
}
const max = []
for(let key in answer){ // answer객체의 key값을 순회하면서
max.push(answer[key]) // max배열에 answer[key]의 value값을 max에 넣어줍니다.
}
const maxNum = Math.max(...max) // 최빈값을 구해줍니다.
const result = [];
for(let key in answer){ // 다시 하번 answer배열의 key값을 순회하면서 만약 answer[key]의 값이 maxNum과 동일하다면 result 배열에 넣어줍니다.
if(answer[key]===maxNum){
result.push(key)
}
}
if(result.length >1) return -1 // 만약 최빈값이 1개보다 많다면 -1을 return 해주고
return Number(result[0]); // 하나라면 result배열의 0번째 값을 Number로 변환해 준 뒤 return 해줍니다.
}
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[프로그래머스] 올바른 괄호 (0) | 2023.02.22 |
---|---|
[프로그래머스] 로그인 성공? (0) | 2023.02.22 |
[프로그래머스] 외계어 사전 (0) | 2023.02.19 |
[Leet Code - eazy] 1913. Maximum Product Difference Between Two Pairs (0) | 2023.02.18 |
[프로그래머스] 문자열 계산하기 (0) | 2023.02.16 |