[Algorithm] 프로그래머스 : 스킬트리

1Consumption·2020년 3월 10일
2

Algorithm

목록 보기
8/8

프로그래머스 lv2 : 스킬트리

코드

import Foundation

func solution(_ skill:String, _ skill_trees:[String]) -> Int {
    var correctCount = 0
    
    for skillTree in skill_trees {
        var learned = String()
        for skillInSkillTree in skillTree {
            if skill.contains(skillInSkillTree) {
                learned += String(skillInSkillTree)
            }
        }
        if skill.starts(with: learned) {
            correctCount += 1
        }
    }
    
    return correctCount
}

풀이과정

선행 스킬 순서 skill과 스킬트리를 담은 배열 skill_trees가 매개변수로 주어지고, 스킬트리 개수를 return 해야한다.

로직은 다음과 같다.

  1. skill tree 배열의 엘리먼트 수 만큼 for문을 돌리며 순차적으로 각 엘리먼트에 접근한다.
  2. 1번에서 순차적으로 접근한 엘리먼트들을 각 skillTree 라고 하자.
  3. 이 skillTree에서 skill에 포함되는 요소를 learned에 담는다. (skill : abc, skillTree : zdawcb라면 learned는 acb가 된다)
  4. 만약 skill이 learned로 시작한다면 correctCount를 1 증가시켜준다. (스킬을 배우는 순서도 고려해야하기 때문에 -> 만약 skill : abc 이고 learned : bc 라면 skill은 learned를 포함하고 순서도 맞지만, 선행스킬 a를 배우지 않았기 때문에 이는 틀린 예시가 된다.)
profile
개발자가되고싶어요

1개의 댓글

comment-user-thumbnail
2020년 3월 10일

👍

답글 달기