PS/문제 풀이
[프로그래머스/Swift] 49993번 - 스킬트리
시르베어
2025. 2. 10. 09:53
문제
https://school.programmers.co.kr/learn/courses/30/lessons/49993#fnref1
풀이
- skill_trees의 값을 하나씩 접근 (skill_tree)
- skill_tree에 있는 값이 skill에 포함(contain)되면 tree에 저장 (tree에는 skill에 있는 요소만 들어 갈 수 있음)
- tree와 skill의 값을 비교 순서가 잘못 되면 false 반환, 맞으면 true
- 개수 확인
전체코드
import Foundation
func solution(_ skill:String, _ skill_trees:[String]) -> Int {
let skill: [String] = skill.map{ String($0) }
var result: Int = 0
for skill_tree in skill_trees {
var tree: [String] = []
for char in skill_tree {
if skill.contains(String(char)) {
tree.append(String(char))
}
}
if skillCheck(skill, tree) {
result += 1
}
}
return result
}
func skillCheck(_ skill: [String], _ tree: [String]) -> Bool {
var sk_Idx: Int = 0
var tr_Idx: Int = 0
while sk_Idx < skill.count && tr_Idx < tree.count {
if skill[sk_Idx] != tree[tr_Idx] {
return false
}
sk_Idx += 1
tr_Idx += 1
}
return true
}