[프로그래머스] 스킬트리
일요일에 라인, 네이버 코테가 있다. 대비도 할 겸 프로그래머스로 몇개 풀어보는중!
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;
}
}
Comments