728x90
# 문제
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.
# 답안
// 1. 입력: 정수 배열 array
// 2. 출력: 최빈값
// 1. 입력: 정수 배열 array
// 2. 출력: 최빈값이 1개면 최빈값 return, 최빈값이 여러개면 -1 return
function solution(array) {
// 각 정수의 등장 횟수를 저장할 객체 생성
const countMap = {};
// 각 정수의 등장 횟수를 세기
for (let num of array) {
if (num in countMap) {
countMap[num]++;
} else {
countMap[num] = 1;
}
}
// 가장 많이 등장한 횟수 찾기
let maxCount = 0;
for (let num in countMap) {
if (countMap[num] > maxCount) {
maxCount = countMap[num];
}
}
// 가장 많이 등장한 횟수가 여러 개인지 확인하고 결과 반환
let frequentValues = [];
for (let num in countMap) {
if (countMap[num] === maxCount) {
frequentValues.push(parseInt(num));
}
}
if (frequentValues.length === 1) {
return frequentValues[0]; // 하나인 경우 최빈값 반환
} else {
return -1; // 여러 개인 경우 -1 반환
}
}
예시 1) 최빈값이 1개인 경우
주어진 배열: [1, 2, 2, 3, 4, 4, 4]
- 각 정수의 등장 횟수를 센다.
- 배열을 순회하면서 각 정수의 등장 횟수를 세어야 한다. 이를 위해 등장 횟수를 저장할 객체를 생성한다.
- 예시 배열을 순회하면서 {1: 1, 2: 2, 3: 1, 4: 3}와 같은 객체를 만든다. 각 정수가 객체의 키이고, 해당 정수의 등장 횟수가 값이다.
- 가장 많이 등장한 횟수를 찾는다.
- 객체에서 가장 큰 값을 찾아야 한다. 이를 위해 모든 값을 확인하며 가장 큰 값을 찾는다.
- 예시 배열에서 가장 많이 등장한 횟수는 3이다.
- 등장 횟수가 가장 많은 정수가 하나인지 확인한다.
- 가장 많이 등장한 횟수를 가진 정수가 하나인지 확인해야 한다.
- 예시 배열에서 가장 많이 등장한 횟수를 가진 정수는 4이며, 하나이다.
- 결과를 반환합니다.
- 최빈값이 하나인 경우, 해당 값을 반환합니다. 최빈값이 여러 개인 경우 -1을 반환한다.
- 예시 배열에서는 최빈값이 4이므로 4를 반환한다.
따라서 solution([1, 2, 2, 3, 4, 4, 4])의 결과는 4가 된다.
예시 2) 최빈값이 여러개인 경우
주어진 배열: [1, 2, 2, 3, 3, 4, 4]
- 각 정수의 등장 횟수를 센다.
- 배열을 순회하면서 각 정수의 등장 횟수를 세어야 한다. 이를 위해 등장 횟수를 저장할 객체를 생성한다.
- 예시 배열을 순회하면서 {1: 1, 2: 2, 3: 2, 4: 2}와 같은 객체를 만든다. 각 정수가 객체의 키이고, 해당 정수의 등장 횟수가 값이다.
- 가장 많이 등장한 횟수를 찾는다.
- 객체에서 가장 큰 값을 찾아야 한다. 이를 위해 모든 값을 확인하며 가장 큰 값을 찾는다.
- 예시 배열에서 가장 많이 등장한 횟수는 2이다.
- 등장 횟수가 가장 많은 정수가 하나인지 확인한다.
- 가장 많이 등장한 횟수를 가진 정수가 하나인지 확인해야 한다.
- 예시 배열에서 가장 많이 등장한 횟수를 가진 정수는 2, 3, 4이며, 이들이 모두 2번 등장한다.
- 결과를 반환한다.
- 최빈값이 하나인 경우, 해당 값을 반환한다. 최빈값이 여러 개인 경우 -1을 반환한다.
- 예시 배열에서는 최빈값이 2, 3, 4로 여러 개이므로 -1을 반환한다.
따라서 solution([1, 2, 2, 3, 3, 4, 4])의 결과는 -1이 된다.
728x90
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 87 - 다음에 올 숫자 ) (0) | 2024.05.03 |
---|---|
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 86 - OX퀴즈 ) (0) | 2024.04.24 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 84 - 특이한 정렬) (0) | 2024.04.24 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 83 - 문자열 밀기) (0) | 2024.04.24 |
[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 82 - 저주의 숫자 3) (0) | 2024.04.23 |