[Programmers][Java] 스킬트리

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

📒 문제


📒 제한조건


🌻 코드

class Solution {
    public int solution(String skill, String[] skill_trees) {
      	int answer = 0;
        int cnt = 0;
        boolean a = false;
		
        // skill의 길이가 1일때는 모든 skill_trees가 가능하다.(중요) 
        if (skill.length() == 1) {
            answer += skill_trees.length;
        } 
        
        else {
            for (int i = 0; i < skill_trees.length; i++) {
                for (int k = 0; k < skill.length() - 1; k++) {
                
                    int index1 = skill_trees[i].indexOf(skill.charAt(k)); // 현재 skill의 위치
                    int index2 = skill_trees[i].indexOf(skill.charAt(k + 1)); // 다음 skill의 위치 
                    
                    // 앞의 스킬을 배우지 않고, 뒤의 스킬을 배울때 
                    if (index1 == -1 &&  index2 != -1) {
                        a = false;
                        break;
                    } 
                    
                    //앞의 스킬을 배우지만, 뒤의 스킬을 더 먼저 배울때
                    else if (index2 != -1 && index1 > index2) {
                        a = false;
                        break;
                    } 
                    
                    else a = true;
                }
                if (a == true) cnt++;
            }
            answer = cnt;
        }

        return answer;
    }
}

💡 정리하기

👉 문제에서 "순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. " 을 잘 생각해봐야했다. 이 말은 스킬 순서에 없는 스킬들만 스킬트리에 있을 경우도 가능하다는 것을 알 수 있다. 또한, 스킬의 길이가 1일때 모든 스킬트리는 가능하다 !

좋은 웹페이지 즐겨찾기