문제 링크
https://programmers.co.kr/learn/courses/30/lessons/49993
문제 요약
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
틀린부분이 있거나, 더 좋은 방법이 있다면 댓글로 남겨주세요!
🌈댓글은 언제나 환영입니다🙏🏻
반응형
'CodingTest 문제풀이' 카테고리의 다른 글
[프로그래머스 L2] [1차] 캐시 - swift (0) | 2021.09.30 |
---|---|
[프로그래머스 L2] 영어끝말잇기 - swift (0) | 2021.09.27 |
[프로그래머스 L1] 문자열 내 마음대로 정렬하기 - swift (0) | 2021.08.20 |
[프로그래머스 L1] 문자열 내림차순으로 배치하기 - swift (2) | 2021.08.20 |
[프로그래머스 L1] 문자열 다루기 기본 - swift (0) | 2021.08.20 |