import java.util.Arrays;
class Solution {
public int solution(String[] babbling) {
int answer = 0;
String[] target = {"aya", "ye", "woo", "ma"};
String[] copy = Arrays.copyOf(babbling, babbling.length);
//한 번씩 존재하는지 확인 -> 있으면 다른 값도 있는지 확인
for(int i=0;i<copy.length;i++){
StringBuilder modified = new StringBuilder(copy[i]);
for(int j=0;j<target.length;j++){
int index = modified.indexOf(target[j]);
if(index != -1) modified.replace(index, index+target[j].length(), "1");
}
//문자가 1로만 되어 있으면 answer++
if(modified.toString().matches("1+")) answer++;
}
return answer;
}
}
타겟을 배열로 만들어서 최대 한 번씩만 출력되기에 포함이 되었는지 확인시킴.
존재하면 그 값을 1로 만들어서 남은 값도 맞는지 확인시키기(원래 값이 변형이 되면 안되니까 copyOf를 통해 배열 복제 / 그냥 값 변화를 못 시키기에 StringBuilder 활용 / indexOf를 활용해서 있는지 확인)
그 후, 정규식을 통해 1로만 이루어졌다면 가능한 것이기에 answer를 증가시키기
그냥 바로 정규식을 통해 바로 구현도 가능하다
if(babbling[i].matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$")){
answer++;
}