[프로그래머스] 옹알이(1)

AI·2024년 12월 31일
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++;
            }

0개의 댓글