본문 바로가기

Coding Test/Programmers

[프로그래머스/JavaScript] 코딩 테스트 풀이 (문제 85 - 최빈값 구하기)

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: 1, 2: 2, 3: 1, 4: 3}와 같은 객체를 만든다. 각 정수가 객체의 키이고, 해당 정수의 등장 횟수가 값이다.
  2. 가장 많이 등장한 횟수를 찾는다.
    • 객체에서 가장 큰 값을 찾아야 한다. 이를 위해 모든 값을 확인하며 가장 큰 값을 찾는다.
    • 예시 배열에서 가장 많이 등장한 횟수는 3이다.
  3. 등장 횟수가 가장 많은 정수가 하나인지 확인한다.
    • 가장 많이 등장한 횟수를 가진 정수가 하나인지 확인해야 한다.
    • 예시 배열에서 가장 많이 등장한 횟수를 가진 정수는 4이며, 하나이다.
  4. 결과를 반환합니다.
    • 최빈값이 하나인 경우, 해당 값을 반환합니다. 최빈값이 여러 개인 경우 -1을 반환한다.
    • 예시 배열에서는 최빈값이 4이므로 4를 반환한다.

따라서 solution([1, 2, 2, 3, 4, 4, 4])의 결과는 4가 된다.

 

 

 예시 2) 최빈값이 여러개인 경우 

주어진 배열: [1, 2, 2, 3, 3, 4, 4]

  1. 각 정수의 등장 횟수를 센다.
    • 배열을 순회하면서 각 정수의 등장 횟수를 세어야 한다. 이를 위해 등장 횟수를 저장할 객체를 생성한다.
    • 예시 배열을 순회하면서 {1: 1, 2: 2, 3: 2, 4: 2}와 같은 객체를 만든다. 각 정수가 객체의 키이고, 해당 정수의 등장 횟수가 값이다.
  2. 가장 많이 등장한 횟수를 찾는다.
    • 객체에서 가장 큰 값을 찾아야 한다. 이를 위해 모든 값을 확인하며 가장 큰 값을 찾는다.
    • 예시 배열에서 가장 많이 등장한 횟수는 2이다.
  3. 등장 횟수가 가장 많은 정수가 하나인지 확인한다.
    • 가장 많이 등장한 횟수를 가진 정수가 하나인지 확인해야 한다.
    • 예시 배열에서 가장 많이 등장한 횟수를 가진 정수는 2, 3, 4이며, 이들이 모두 2번 등장한다.
  4. 결과를 반환한다.
    • 최빈값이 하나인 경우, 해당 값을 반환한다. 최빈값이 여러 개인 경우 -1을 반환한다.
    • 예시 배열에서는 최빈값이 2, 3, 4로 여러 개이므로 -1을 반환한다.

따라서 solution([1, 2, 2, 3, 3, 4, 4])의 결과는 -1이 된다.

728x90