중복을 허용하는 순열을 DFS로 돌려서 다섯 개의 알파벳으로 가능한 모든 단어를 카운트를 통해 순서를 체크, 딕셔너리에 모두 기록했다. 이를 통해 주어진 단어가 해당 사전에 몇 번째에 기록되어 있는지 바로 해쉬했다.
import Foundation
var wordDict = [String:Int]()
var count = 0
func solution(_ word:String) -> Int {
DFS(wordLetters: [])
return wordDict[word]!
}
func DFS(wordLetters: [String]) {
let word = wordLetters.joined()
wordDict[word] = count
if wordLetters.count == 5 {
return
} else {
let letters = ["A", "E", "I", "O", "U"]
for letter in letters {
count += 1
DFS(wordLetters: wordLetters + [letter])
}
}
}