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

문제보기

일요일에 라인, 네이버 코테가 있다. 대비도 할 겸 프로그래머스로 몇개 풀어보는중!

class Solution {
  public int solution(String skill, String[] skill_trees) {
		
    int n = skill_trees.length; // 유저들이 만든 스킬트리의 갯수 
    int len = skill.length(); // 스킬순서의 길이

    boolean[][] check = new boolean[n][len]; // 배웠는지 여부를 표시할 배열
    int ans = 0; // 정답을 저장할 변수

    myloop:
    for(int i = 0 ; i < n ; i++ ){ 
      String s = skill_trees[i]; // i번째 유저가 만든 스킬트리 
      for(int j = 0 ; j < s.length() ; j++){
        // 스킬 순서에 포함된 스킬인가?
        int idx = skill.indexOf(s.charAt(j)); 
        // 그러하다면 
        if(idx != -1 ){
          for(int k = 0 ; k < idx ; k++ ){ // 해당 순서 전까지 배운 스킬인지 체크
            if(check[i][k] == false){ // 배운 적이 없다면 이 스킬트리는 무효하다
              continue myloop;
            }
          }
          check[i][idx] = true; // 이전 스킬까지 모두 배운적이 있다면 이 스킬도 배울 수 있다
        }else{ // 스킬 순서에 포함된 스킬이 아니라면 그냥 넘겨도 된다 
          continue;
        }
      }
      ans++; // i번째 유저가 만든 스킬트리가 무사히 통과되었다면 가능한 스킬트리이다 
    }
    return ans;
  }
}

Tags:

Categories:

Updated:

Comments