융융이'Blog

서머코딩/윈터코딩(~2018)/스킬트리 본문

2022이전/알고리즘(하루에하나씩!)

서머코딩/윈터코딩(~2018)/스킬트리

바로퇴장 2020. 2. 23. 16:00
class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = 0;
        for(int i=0; i<skill_trees.length; i++){
            if(check_skill(skill, skill_trees[i])){
                answer++;
            }
        }
        return answer;
    }
    
    public boolean check_skill(String skill, String skill_tree){
        char[] skill_char = new char[skill.length()]; 
        int [] contain_index = new int[skill.length()];
        int include;
        for(int i = 0; i<skill.length(); i++){
            // 순차적으로 skill의 알파벳이 skill_tree에 포함 되어 있는지 확인한다.
            include = skill_tree.indexOf(skill.substring(i,i+1)); 
            // 각각의 인덱스에 포함된 인덱스 값을 저장해준다.
            contain_index[i] = include;
        }
        
        for(int i=0; i<skill.length(); i++){
            for(int j=i+1; j<skill.length(); j++){
                // 포함 인덱스 값이 잘 정렬되어있는지 확인한다.
                if( (contain_index[i] > contain_index[j]&& contain_index[j] != -1) || 
                    (contain_index[i] == -1 && contain_index[j] != -1) )
                   {
                    System.out.print(skill_tree);
                    return false;
                }
            }
        }
         return true;
    }
}

 

주로 사용했던 메소드

string

  • contains : string에 해당 char가 포함되는가?
  • indexOf : string에 해당 char가 포함된 index값 반환
  • length(): string의 크기
  • length : 배열의 크기
  • substring(시작index, 끝index) : 해당 인덱스 위치 string 반환