class Solution {
public int solution(String[] babbling) {
String[] says = {"aya", "ye", "woo", "ma"};
int count = 0;
StringBuilder blank = new StringBuilder();
for (String word : babbling) {
for (String say : says) {
if (word.contains(say)) {
word = word.replace(say, " ");
blank.append(" ");
}
if (word.equals(blank.toString())) {
count++;
break;
}
}
blank.setLength(0);
}
return count;
}
}
구현하다보니 생각보다 복잡하게 구현한 듯한 기분이 없잖아있는 듯 하다.
발음 가능한 단어의 배열을 만들어 발음하려는 단어에 해당 단어가 있는 경우
replace
를 통해 공백으로 바꾸어 주었다.
이 때 ""
이 아닌 " "
을 한 이유는 "wyeoo"의 경우 "ye"를 제거할 때 ""
으로 만들어버리면 "woo"로 단어가 이어져서 say배열의 단어와 매칭되어 발음 불가능한 단어가 발음이 가능하다고 체크가 된다.
그래서 띄어쓰기가 있는 공백으로 바꾸어주었고 StringBuilder
를 통해 공백으로 바뀔 때마다 공백의 길이를 늘려주었고 한 단어가 전부 공백이 된 경우
발음에 성공한 것이므로 카운트 해주었다.
이 부분은 사실 replace
를 통해 임의의 숫자나 문자로 바꾸고 say
배열을 다 돌았을 때 해당 문자로만 단어가 구성된 경우 카운트하는 방식으로하면 코드가 더 간결하게 구성될 것 같다.