코딩테스트/프로그래머스

[Swift] 최빈값 구하기

clamp 2022. 10. 19. 15:34

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

 

import Foundation

func solution(_ array:[Int]) -> Int {
    var tmp: [Int] = []
    //array의 최대 수 만큼의 배열을 만든다
    for _ in 0...array.max()!{
        tmp.append(0)
    }
    //array에 담긴 수 인 tmp의 위치에 증가
    //i가 20이면 tmp[20]이 1증가
    for i in array{
        tmp[i] += 1
    }
    
    //tmp의 최대수를 가져옴
    let tmpmax = tmp.max()
    var cnt = 0
    var wheres = 0
    
    //tmpmax를 찾아가며 최대빈도수가 나타날 때 마다 cnt증가, i를 wheres에 저장
    for i in 0...tmp.count - 1{
        if(tmpmax == tmp[i]){
            cnt += 1
            wheres = i
        }
    }
    //wheres 자체가 index이기 떄문에 wheres출력
    return cnt > 1 ? -1 : wheres
}