머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling
이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
babbling
의 길이 ≤ 100babbling[i]
의 길이 ≤ 30babbling | result |
---|---|
["aya", "yee", "u", "maa"] | 1 |
["ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"] | 2 |
조카가 발음할 수 있는 말을 모아둔 babblingType
을 선언한다.
연속적으로 같은 발음을 할지 체크할 preType
을 선언하여 발음이 매칭되면 여기에 저장해 둔다.
babbling[i]
이 babblingType
과 비교하고 매치가 된다면 ""
으로 치환한다.
babbling[i]
이 마지막에 ""
으로 남게 된다면 발음 할 수 있는 단어로 판별한다.
다른 사람 풀이를 확인하니
연속으로 발음 하는경우인 ayaaya|yeye|woowoo|mama
를 체크해서 발음에 포함되지 않는 문자 "1"
과 같은 것으로 치환하고
발음할수 있는 aya|ye|woo|ma
를 ""
로 치환하는 로직으로 체크를 하여
이에 맞게 개선한 코드로 짜보았다.
class Solution {
public int solution(String[] babbling) {
int answer = 0;
String[] babblingType = {"aya", "ye", "woo", "ma"};
for (int i = 0; i < babbling.length; i++) {
String preType = "";
boolean isMatch = true;
while (isMatch) {
isMatch = false;
for (int j = 0; j < babblingType.length; j++) {
if (!preType.equals(babblingType[j])
&& babbling[i].length() >= babblingType[j].length()
&& babbling[i].substring(0, babblingType[j].length()).equals(babblingType[j])) {
babbling[i] = babbling[i].replaceFirst(babblingType[j], "");
preType = babblingType[j];
isMatch = true;
}
}
}
if (babbling[i].equals("")) answer++;
}
return answer;
}
}
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for (int i = 0; i < babbling.length; i++) {
babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama", "1");
babbling[i] = babbling[i].replaceAll("aya|ye|woo|ma", "");
if (babbling[i].equals("")) answer++;
}
return answer;
}
}