머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다.


조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다.


문자열 배열 babbling이 매개변수로 주어질 때,


머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.



<제한사항>


1 ≤ babbling의 길이 ≤ 100


1 ≤ babbling[i]의 길이 ≤ 15


babbling의 각 문자열에서 "aya", "ye", "woo", "ma"는 각각 최대 한 번씩만 등장합니다.


즉, 각 문자열의 가능한 모든 부분 문자열 중에서 "aya", "ye", "woo", "ma"가 한 번씩만 등장합니다.


문자열은 알파벳 소문자로만 이루어져 있습니다.



<입출력 예>


(babbling)                                                 (result)


["aya", "yee", "u", "maa", "wyeoo"]                 1

["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3



유의사항


네 가지를 붙여 만들 수 있는 발음 이외에는 어떤 발음도 할 수 없는 것으로 규정합니다.


예를 들어 "woowo"는 "woo"는 발음할 수 있지만 "wo"를 발음할 수 없기 때문에 할 수 없는 발음입니다.




class Solution {

    public int solution(String[] babbling) {

        int answer = 0;

        String[] str = {"aya","ye","woo","ma"};

        String[] str4 = new String[24];

        

        for(String s : babbling) {

            for(int i=0; i<str.length; i++) {

                if(s.equals(str[i])) answer++;

                

                for(int j=i+1; j<str.length; j++) {

                    if(s.equals(str[i]+str[j])) answer++;

                    if(s.equals(str[j]+str[i])) answer++;

                    

                    for(int k=i+2; k<str.length; k++) {

                        if(s.equals(str[i]+str[j]+str[k])) answer++;

                        if(s.equals(str[i]+str[k]+str[j])) answer++;

                        if(s.equals(str[k]+str[j]+str[i])) answer++;

                        if(s.equals(str[k]+str[i]+str[j])) answer++;

                        if(s.equals(str[j]+str[i]+str[k])) answer++;

                        if(s.equals(str[j]+str[k]+str[i])) answer++;

                    }

                }

            }

        }

        

        int n=0;

        for(int a=0; a<str.length; a++) {

            for(int b=0; b<str.length; b++) {

                if(b==a) b++;

                if(b==4) break;

                for(int c=0; c<str.length; c++) {

                    if(c==a || c==b) c++;

                    if(c==a || c==b) c++;

                    if(c==4) break;

                    for(int d=0; d<str.length; d++) {

                        if(d==a || d==b || d==c) d++;

                        if(d==a || d==b || d==c) d++;

                        if(d==a || d==b || d==c) d++;

                        if(d==4) break;

                        str4[n++] = str[a]+str[b]+str[c]+str[d];

                    }

                }

            }

        }

        

        for(String s : babbling) {

            for(int i=0; i<str4.length; i++) {

                if(s.equals(str4[i])) answer++;

            }

        }

        

        return answer;

}




이거 안 돼서 싹 다 지우고 아예 다른 방법으로 풀었으니까


다른 방법으로 풀으라는 이상한 소리는 하지 말고


난 그냥 이게 왜 안 되는지 그 이유를 알고 싶은거


이 코드의 반례가 무엇인지 어느 부분이 논리에 들어맞지 않는지


알 수 있는 코딩 씹초고수 나 좀 알려줘