CodingTest 문제풀이

[프로그래머스 L2] 스킬트리 - swift

나른한코딩 2021. 9. 3. 16:06

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

 

 

 

 

문제 요약

skill_trees 배열에서 주어진 skill의 순서대로 선행 스킬을 배우는 스킬만 가능한 스킬트리로 본다.

가능한 스킬트리의 개수를 return 하는 함수를 작성하면 된다.

 

예를들어

skill이 "CBD" 라면,

무조건 C->B->D 순서로 스킬을 배워야한다.

BACDE : B 스킬 전에 C가 선행되어야 하므로 불가능한 스킬트리이다.

CBADF : 가능한 스킬트리

AECB : 가능한 스킬트리

BDA : B 스킬 전에 C가 선행되어야 하므로 불가능한 스킬트리이다.

 

 

 

 

 

코드

func solution(_ skill:String, _ skill_trees:[String]) -> Int {
  var can: Int = skill_trees.count
  var skillArr = Array(skill)
  
  for tree in skill_trees {
    skillArr = Array(skill)
    for t in tree {
      if !skillArr.contains(t) {
        continue
      } else {
        if t == skillArr.first {
          skillArr.removeFirst()
        } else {
          can -= 1
          break
        }
      }
    }
  }
  return can
}

solution("CBD", ["BACDE", "CBADF", "AECB", "BDA"]) == 2 // true

 

 

 

 

 

틀린부분이 있거나, 더 좋은 방법이 있다면 댓글로 남겨주세요! 
🌈댓글은 언제나 환영입니다🙏🏻

 

 

 

 

반응형