각 키까지 도달하기 위한 최소 횟수를 구하는 문제입니다.
각 키의 최소 횟수를 미리 구해두고, 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 |