프로그래머스

프로그래머스_스킬트리_자바

o늘do 2020. 5. 17. 18:29

출처 https://programmers.co.kr/learn/courses/30/lessons/49993

 

코딩테스트 연습 - 스킬트리

 

programmers.co.kr

한가지 주의할 점만 처리해주면 쉽게 풀수있는 문제이다. 

스킬 순서가 A -> D -> C 일때

A -> C 는 불가능하다. D 를 배우지 않고 C 를 배웠기 때문이다.

나는 스킬의 순서를 표시하는 sequence 변수를 두어서 해결했다.  

만약 스킬트리가 A -> B -> C 이고 BCAD 를 검사해야한다고 하자

현재 sequence 는 0인데 BCAD 에서 B 는 1번째( [A,B,C] 배열인덱스 기준으로) 원소이다 

즉 아직 A 를 배우지 않아서 틀린 스킬트리가 된다.

다음은 전체코드이다. 

  public static int solution(String skill, String[] skill_trees) {
        int answer = 0;
        String[] skillArr = skill.split("");
        
        for(String skill_tree : skill_trees) {
        	int index = -1;
        	int sequence = 0; //스킬의 순서를 관리하는 변수
        	boolean isRight = true;
        	for(int i = 0; i < skillArr.length; i++) {
        		int new_index = skill_tree.indexOf(skillArr[i]);
        		if(new_index == -1) {
        			continue;
        		}
        		if(new_index < index) {
        			isRight = false;
        			break;
        		}
        		if(new_index > index) {
        			if(sequence == i) { 
            			System.out.println(sequence + " " + i);
            			sequence++;
            			index = new_index;
        			}else { 
        				isRight = false;
        				break;
        			}
        		}
        	}
        	if(isRight) {
        		answer++;
        	}
        }
        return answer;
    }