Mac Plus

Hello Swift

프로그래머스 모의고사(Swift)

문제 해설
  • 완전탐색이라는걸 염두해두고 모든 answers를 탐색해야한다.
  • 각각의 학생이 찍는 번호 주기를 배열로 표시해두고 answers의 값과 찍는 번호가 같은 경우에 dic에 +1 해준다.
  • dic에서 max값을 가져오는데 가장 문제를 많이 맞힌 학생이 여러명일 경우에는 오름차순으로 정렬시켜주면 끝
func solution(_ answers:[Int]) -> [Int] {
    let arr1 = [1,2,3,4,5]
    let arr2 = [2,1,2,3,2,4,2,5]
    let arr3 = [3,3,1,1,2,2,4,4,5,5]
    
    var dic: [Int: Int] = [:]
    
    for i in 0..<answers.count {
        if answers[i] == arr1[i%arr1.count] { dic[1] = (dic[1] ?? 0) + 1 }
        if answers[i] == arr2[i%arr2.count] { dic[2] = (dic[2] ?? 0) + 1 }
        if answers[i] == arr3[i%arr3.count] { dic[3] = (dic[3] ?? 0) + 1 }
    }
    
    let max = dic.values.max()!
    let result = dic.filter { $0.value == max }.keys.sorted()

    return result
}