프로그래머스 49993번
https://www.acmicpc.net/problem/5944
skill
에 있는 문자들이 순서대로 나오는지 확인만 하면 된다.
int N = skill.length();
int M = skill_trees.length;
char[] skillArr = skill.toCharArray();
List<Character> skillList = IntStream.range(0, N)
.mapToObj(i -> skillArr[i])
.collect(Collectors.toList());
char타입의 배열을 stream을 사용해서 List<Character>
로 변경
import java.util.*;
import java.util.stream.*;
class Solution {
public int solution(String skill, String[] skill_trees) {
int ans = 0;
int N = skill.length();
int M = skill_trees.length;
char[] skillArr = skill.toCharArray();
List<Character> skillList = IntStream.range(0, N).mapToObj(i -> skillArr[i]).collect(Collectors.toList());
for(int i=0; i<M; i++) {
char[] chArr = skill_trees[i].toCharArray();
int len = chArr.length;
int idx = 0;
boolean flag = false;
for(int j=0; j<len; j++) {
char ch = chArr[j];
if(skillList.contains(ch) && skillList.get(idx) != ch ) {
flag = true;
break;
} else if(skillList.contains(ch) && skillList.get(idx) == ch) {
idx++;
}
}
if(!flag) {
ans++;
}
}
return ans;
} // End of solution()
} // End of Solution class