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

Joo Yeong Park·2020년 10월 21일
0

algorithm

목록 보기
5/7

스킬트리

  • input : skill:String, skill_trees[]:String

가능한 스킬 트리의 개수를 return 하는 문제이다.

skill에는 선행스킬의 순서가 들어있는 문자열이므로 주어진 스킬트리에서 skill의 각 요소가 순서대로 등장해 선행스킬을 만족했는지 index를 체크하는 방법으로 문제를 풀었다.

class Solution {
    public int solution(String skill, String[] skill_trees) {
        int answer = skill_trees.length;
        int pre_index = 0, cur_index = 0;
        
        for(int i = 0; i<skill_trees.length; i++){
            pre_index = skill_trees[i].indexOf(skill.charAt(0));
            
            for(int j = 1; j<skill.length(); j++){
                cur_index = skill_trees[i].indexOf(skill.charAt(j));
                if((pre_index>cur_index&&cur_index!=-1)||(pre_index==-1&&cur_index!=-1)){
                    answer--;
                    break;
                }                
                pre_index = cur_index;
            }
                       
        }
        return answer;
    }
} 

선행스킬을 만족하는지 확인하는 부분이 까다로웠는데 내가 푼 코드는 👆이렇다.

string.indexOf(data)stringdata가 시작하는 인덱스를 return 하는데, 만약 data가 없다면 -1을 반환한다.

skill에 주어지는 순서대로라면 pre_index<cur_index여야 하는데 이 스킬들이 존재하지 않는 경우까지 고려하여 선행스킬만족 조건을 생각해보면 아래와 같다.

선행스킬이 만족하지 못하면 처음에 answer = skill_trees.length로 셋팅해놓은 answer--;하고 break하는 식으로 진행했다. 꼭 break 해줘야 한다.

처음에는 answer=0으로 하고 가능한 스킬트리인 경우에 answer++하는 식으로 하려고했는데 선행스킬이 만족하는 경우가 만족하지 않는 경우보다 많아서 위의 방식으로 코딩했다.

profile
웹 개발자를 꿈꾸는 삐약

0개의 댓글