2022이전/알고리즘(하루에하나씩!)
서머코딩/윈터코딩(~2018)/스킬트리
바로퇴장
2020. 2. 23. 16:00
class Solution {
public int solution(String skill, String[] skill_trees) {
int answer = 0;
for(int i=0; i<skill_trees.length; i++){
if(check_skill(skill, skill_trees[i])){
answer++;
}
}
return answer;
}
public boolean check_skill(String skill, String skill_tree){
char[] skill_char = new char[skill.length()];
int [] contain_index = new int[skill.length()];
int include;
for(int i = 0; i<skill.length(); i++){
// 순차적으로 skill의 알파벳이 skill_tree에 포함 되어 있는지 확인한다.
include = skill_tree.indexOf(skill.substring(i,i+1));
// 각각의 인덱스에 포함된 인덱스 값을 저장해준다.
contain_index[i] = include;
}
for(int i=0; i<skill.length(); i++){
for(int j=i+1; j<skill.length(); j++){
// 포함 인덱스 값이 잘 정렬되어있는지 확인한다.
if( (contain_index[i] > contain_index[j]&& contain_index[j] != -1) ||
(contain_index[i] == -1 && contain_index[j] != -1) )
{
System.out.print(skill_tree);
return false;
}
}
}
return true;
}
}
주로 사용했던 메소드
string
- contains : string에 해당 char가 포함되는가?
- indexOf : string에 해당 char가 포함된 index값 반환
- length(): string의 크기
- length : 배열의 크기
- substring(시작index, 끝index) : 해당 인덱스 위치 string 반환