알고리즘 | 최빈값

일어나 개발해야지·2023년 8월 3일

알고리즘

목록 보기
2/12

문제설명

최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.

제한사항

  • 0 < array의 길이 < 100
  • 0 ≤ array의 원소 < 1000

입출력 예

arrayresult
[1,2,3,3,3,4]3
[1,1,2,2]-1
[1]1

접근

Dictionary

var elementCountDict: [Int: Int] = [:]
// output { 1: [1], 2: [2, 2], 3: [3, 3, 3] }

답안제출

func solution(_ arr: [Int]) -> Int {
    // 단계 1: 배열의 각 요소를 검색하고 각 요소의 개수를 세는 딕셔너리 생성.
    var elementCountDict: [Int: Int] = [:]
    for num in arr {
        elementCountDict[num, default: 0] += 1
    }

    // 단계 2: 배열 내 가장 많이 등장하는 요소의 개수 찾기.
    var maxCount = 0
    for count in elementCountDict.values {
        maxCount = max(maxCount, count)
    }

    // 단계 3: 가장 빈도가 높은 값이 두 개 이상인지 확인.
    var mostFrequentValue = -1
    for (num, count) in elementCountDict {
        if count == maxCount {
            if mostFrequentValue == -1 {
                mostFrequentValue = num
            } else {
                return -1
            }
        }
    }

    // 단계 4: 결과 반환.
    return mostFrequentValue
}

0개의 댓글