-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
💬 문제
💬 Idea
- keymap을 돌며 keyDict에 자판별 최솟값을 저장해준다.
- 이후 targets를 돌며 타겟 문자열 각각의 최소 횟수을 더하여 각 타겟 문자열이 최소 몇번 눌려야하는지 구해준다.
- 만약 keyDict에 타겟 문자가 없을 경우 -1을 리턴하기 위해 for문을 break해주었다.
💬 풀이
import Foundation
func solution(_ keymap:[String], _ targets:[String]) -> [Int] {
var keyDict: [String: Int] = [:]
var result: [Int] = []
for key in keymap {
for (idx, k) in key.enumerated() {
if keyDict[String(k)] == nil {
keyDict[String(k)] = idx + 1
} else {
keyDict[String(k)] = keyDict[String(k)]! > idx + 1 ? idx + 1 : keyDict[String(k)]!
}
}
}
for target in targets {
var ans = 0
for t in target {
if keyDict[String(t)] == nil {
ans = -1
break
} else {
ans += keyDict[String(t)]!
}
}
result.append(ans)
}
return result
}