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