문제 설명
해결과정
Solution.java
import java.util.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
int[] sequence = new int [skill.length()];
Arrays.fill(sequence, -1);
printSkill(skill);
for(String skill_tree : skill_trees) {
skillSequence(skill_tree, skill, sequence);
if(checkSequence(sequence)) {
answer++;
}
// for(int num : sequence) {
// System.out.print(num + " ");
// }
// System.out.println();
}
return answer;
}
// 배열 확인
boolean checkSequence(int[] sequence) {
boolean check = true;
boolean isMinus = false;
int previousSkill = -2;
int currentSkill = 0;
for(int num : sequence) {
// 현재 스킬 입력
currentSkill = num;
// 현재 스킬이 없다면
if(currentSkill == -1) {
isMinus = true;
}
// 현재 스킬이 있다면
else {
if(isMinus) {
check = false;
break;
} else {
// 이전 스킬보다 다음에 있다면
if(previousSkill > currentSkill) {
check = false;
break;
}
}
}
previousSkill = currentSkill;
}
return check;
}
// 스킬 트리 확인
int[] skillSequence(String skill_tree, String skill, int[] sequence) {
String s = "";
// skill의 각 인덱스의 문자를 찾기
// 배열에다 스킬이 나타나는 인덱스를 넣었음
// 스킬이 없다면 -1
for(int i = 0; i < skill.length(); i++) {
s = skill.charAt(i) + "";
sequence[i] = skill_tree.indexOf(s);
}
return sequence;
}
// skill 출력
void printSkill(String skill) {
for(int i = 0; i < skill.length(); i++) {
System.out.print(skill.charAt(i) + " ");
}
System.out.println();
}
}
Java
복사