개인 공부/프로그래머스

[프로그래머스] Lv.1 모의고사 swift

임구마🍠 2024. 7. 29. 18:00


시험이 최대 10,000문제로 구성되어있다 라는 조건이 있어서

처음엔 반복문으로 수포자1, 2, 3 배열을 answers 배열 크기랑 동일하게 늘려서 풀었다가

생각해보니 늘리는 작업 없이 index로 접근해서 배열 개수로 나눈 나머지로 비교해도 되는거였음..!

 

나의 풀이

import Foundation

func solution(_ answers:[Int]) -> [Int] {
    let a1 = [1, 2, 3, 4, 5]
    let a2 = [2, 1, 2, 3, 2, 4, 2, 5]
    let a3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    var dict = [1:0, 2:0, 3:0]

    for (index, answer) in answers.enumerated() {
        dict[1]! += a1[index % 5] == answer ? 1 : 0
        dict[2]! += a2[index % 8] == answer ? 1 : 0
        dict[3]! += a3[index % 10] == answer ? 1 : 0
    }

    return dict.filter { $0.value == dict.values.max()! }.map { $0.key }.sorted()
}