문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하는 solution 함수를 작성하는 문제이다.
처음엔 split을 사용해 발음할 수 있는 단어가 나오면 삭제하는 방식으로 구현하였으나, 연속해서 같은 발음을 하는 단어를 처리할 수 없기 때문에 다른 방식을 고안하였다.
babbling 배열에 주어진 단어가 발음할 수 있는 단어인지 판별하고, 발음할 수 있는 단어이면 answer에 +1을 하도록 하였다. 발음할 수 있는 단어인지는 boolean형을 return하는 pronunciation 함수를 만들어 판별하였다. 조카가 발음할 수 있는 단어를 첫번째 알파벳 대문자로 replace하여 같은 발음을 연속으로 발음하거나, 발음할 수 없는 단어가 있다면 false를 return하도록 하였다.
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for (int i = 0; i < babbling.length; i++) {
// 발음할 수 있는 단어인지 판별
boolean pron = pronunciation(babbling[i]);
// 발음할 수 있는 단어는 answer++
if (pron) {
answer++;
}
}
return answer;
}
private boolean pronunciation(String str) {
str = str.replaceAll("aya", "A");
str = str.replaceAll("ye", "Y");
str = str.replaceAll("woo", "W");
str = str.replaceAll("ma", "M");
int count = 0;
char[] b = {'A', 'Y', 'W', 'M'};
for (int i = 0; i < str.length(); i++) {
for (int j = 0; j < b.length; j++) {
if (str.charAt(i) == b[j]) {
count++;
}
}
}
if (count != str.length()) {
return false;
}
for (int i = 0; i < str.length() - 1; i++) {
if (str.charAt(i) == str.charAt(i + 1)) { // 같은 발음 반복
return false;
}
}
return true;
}
}