출처 https://programmers.co.kr/learn/courses/30/lessons/49993
한가지 주의할 점만 처리해주면 쉽게 풀수있는 문제이다.
스킬 순서가 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;
}
'프로그래머스' 카테고리의 다른 글
프로그래머스_종이접기_자바 (0) | 2020.05.26 |
---|---|
프로그래머스_카카오 프렌즈 컬러링북_자바 (0) | 2020.05.21 |
프로그래머스_124 나라의 숫자_JAVA (0) | 2020.05.17 |
프로그래머스_입국심사_JAVASCRIPT (0) | 2020.05.07 |
프로그래머스_섬연결하기 (0) | 2020.05.07 |