본문 바로가기
Algorithm

SwiftUI: 대충 만든 자판

by songmoro 2023. 12. 17.

문제 링크

 

각 키까지 도달하기 위한 최소 횟수를 구하는 문제입니다.

 

각 키의 최소 횟수를 미리 구해두고, reduce로 최소 횟수를 계산합니다.

키맵에 존재하지 않는 키가 있을 때 중간에 탈출을 못 해서 임의의 작은 값을 대입했습니다.

 

func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
    var keyDict: [String.Element: Int] = [:]
    
    keymap.map { key in
        for (index, element) in key.enumerated() {
            keyDict[element] = keyDict[element] != nil ? min(keyDict[element]!, index + 1) : index + 1
        }
    }
    
    return targets.map {
        let count = $0.reduce(0) {
            $0 + (keyDict[$1] ?? -10101)
        }
        
        return count <= 0 ? -1 : count
    }
}

'Algorithm' 카테고리의 다른 글

SwiftUI: 둘만의 암호  (1) 2023.12.17
SwiftUI: 카드 뭉치  (0) 2023.12.17
SwiftUI: 덧칠하기  (1) 2023.12.17
SwiftUI: 추억 점수  (0) 2023.12.17
SwiftUI: 성격 유형 검사하기  (1) 2023.12.17