import Foundation
func solution(_ skill:String, _ skill_trees:[String]) -> Int {
var result = 0
for i in skill_trees {
var s = skill
var check = true
for j in i {
if s.contains(j) && s.first != j {
check = false
break
} else if j == s.first {
check = true
s.removeFirst()
}
if s.count == 0 {
break
}
}
if check != false {
result += 1
}
}
return result
}
처음에 check 를 그냥 0으로 시작해서 j == s.first일 때 숫자 올리고, 첫 if 문에서 다시 0으로 바꿔줬는데..
테스트케이스 몇 개만 정답처리되고 나머지는 틀렸음
예외상황을 생각해봤는데
선행스킬이 따로 없는 스킬들만 들어왔을 경우에도 result가 카운트되어야 하는데
이처럼 작성하면 그런 상황에 카운트할 수가 없었음
그래서 check를 Bool로 바꾸고 해결!
O(N^2)가 안되게 하는 경우도 있을까.. 하고 다른사람 코드들도 살펴봤는데
그냥 내장함수 많이 써서 짧게 코드를 쓰는 사람은 있어도 N^2가 아닌 경우는 없어보였음
'알고리즘문풀 with SWIFT > Programmers' 카테고리의 다른 글
swift ) 타겟 넘버 (0) | 2022.07.02 |
---|---|
swift ) 프로그래머스 - N개의 최소공배수 (0) | 2022.06.27 |
swift ) 프로그래머스 - 22카카오블채 - 신고 결과 받기 (0) | 2022.06.23 |
swift ) 프로그래머스 - 로또의 최고 순위와 최저 순위 (0) | 2022.06.23 |
swift ) 프로그래머스 - 21카카오인턴 - 신규 아이디 추천 (0) | 2022.06.22 |