본문 바로가기

프로그래머스(Java)/Level 2

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

728x90

코드 힌트

  1. 스킬 순서 이해:
    • 주어진 skill 문자열은 스킬의 순서를 정의하며, 이 순서대로 스킬을 배워야만 합니다.
    • 예를 들어, skill이 "CBA"라면, 스킬 트리에서 C가 먼저, B가 그다음, A가 마지막으로 와야 합니다.
  2. 필수 스킬 확인:
    • 각 스킬 트리(skillTrees)에 대해 필수 스킬들이 올바른 순서로 나열되어 있는지 확인합니다.
    • skill.indexOf(currentSkill)로 현재 스킬이 필수 스킬 목록에 있는지 확인합니다. 만약 포함되지 않았다면 무시합니다.
  3. 순서 확인:
    • 만약 필수 스킬이 올바른 순서로 나타나지 않았다면, 해당 스킬 트리는 유효하지 않다고 판단합니다.
    • 스킬 트리의 유효성을 판단한 후, 유효한 스킬 트리의 개수를 증가시킵니다.
  4. 결과 반환:
    • 모든 스킬 트리를 확인한 후, 유효한 스킬 트리의 개수를 반환합니다.

 

 


정답은 더보기 클릭

더보기
class Solution {
    public int solution(String skill, String[] skillTrees) {
        int result = 0;  // 올바른 스킬 트리 개수를 저장
        
        for (String skillTree : skillTrees) {
            int requiredSkillIndex = 0;  // 다음으로 필요한 스킬의 인덱스
            boolean isValid = true;  // 스킬 트리가 유효한지 여부
            
            for (int i = 0; i < skillTree.length(); i++) {
                char currentSkill = skillTree.charAt(i);
                int skillIndex = skill.indexOf(currentSkill);
                
                // 현재 스킬이 필수 스킬에 포함되지 않는다면 무시
                if (skillIndex == -1) continue;
                
                // 필수 스킬이 올바른 순서대로 배치되었는지 확인
                if (skillIndex == requiredSkillIndex) {
                    requiredSkillIndex++;
                } else {
                    isValid = false;
                    break;
                }
            }
            
            // 유효한 스킬 트리인 경우 카운트 증가
            if (isValid) result++;
        }
        return result;
    }
}
728x90