[Swift] 모의고사 - 프로그래머스 Lv 1

Swift로 프로그래머스 모의고사 문제를 해결하며 얻은 지식을 정리합니다.

문제로 이동

풀이

import Foundation

func solution(_ answers:[Int]) -> [Int] {
    
    let givenUps = [
        [1, 2, 3, 4, 5],
        [2, 1, 2, 3, 2, 4, 2, 5],
        [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]
    ]

    var scores:[Int: Int] = [1: 0, 2: 0, 3: 0]
    
    for (i, givenUp) in givenUps.enumerated() {
        for (j, answer) in answers.enumerated() {
            if answer == givenUp[j % givenUp.count] {
                scores[i + 1]! += 1
            }
        }
    }
    
    return scores.filter { $0.value == scores.values.max() }.keys.sorted()
}

고찰

문제는 enumerated()를 이용하여 index와 value를 얻는 방식으로 해결하였지만, 제출 당시에는 하나의 테스트 케이스에서 시간 초과가 발생했었다. 현재는 지속적으로 제출하여도 문제 없어보인다.

사용한 개념

  • Dictionary - keys and values
  • enumerated() - Apple Developer

좋은 웹페이지 즐겨찾기