알고리즘문풀 with SWIFT/Programmers

swift ) 프로그래머스 - 스킬트리

유사앱등이 2022. 6. 23. 16:45
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가 아닌 경우는 없어보였음