skill을 Character 배열로 변환한 후 사용했다.
주어진 skill tree가 가능한지 확인하기 위해 check()를 사용했다.
어디든 skill이 순서를 지키면서 tree에 들어가 있으면 되므로 skill의 index를 가지고 확인했다.
func solution(_ skill: String, _ skill_trees: [String]) -> Int {
var skillCharacter: [Character] = []
for character in skill {
skillCharacter.append(character)
}
var answer = 0
for tree in skill_trees {
if check(skillCharacter, tree) {
answer += 1
}
}
return answer
}
func check(_ skill: [Character], _ checkSkill: String) -> Bool {
var skillIndex = skill.startIndex
for check in checkSkill {
if !skill.contains(check) {
continue
}
if skill[skillIndex] != check {
return false
}
skillIndex += 1
}
return true
}