정말 정석적으로 생각했다.
import java.util.HashMap;
class Solution {
public int solution(String[] babbling) {
HashMap<Character,String> words = new HashMap<>() {{
put('a',"aya");
put('y',"ye");
put('w',"woo");
put('m',"ma");
}};
int answer = 0;
for(String s: babbling) {
char prev='\u0000';
int i=0;
for(;i<s.length();) {
if(prev==s.charAt(i)) break;
String word = words.getOrDefault(s.charAt(i),"");
if(word.equals("")) break;
String curStr = s.substring(i,Math.min(s.length(),i+word.length()));
if(curStr.equals(word)) {
prev = s.charAt(i);
i+= word.length();
} else break;
}
if(i==s.length()) answer++;
}
return answer;
}
}
class Solution {
public int solution(String[] babblings) {
// "aya", "ye", "woo", "ma" 4가지 발음만 가능
int answer = 0;
for(int i = 0; i < babblings.length; i++) {
if(babblings[i].contains("ayaaya") || babblings[i].contains("yeye") || babblings[i].contains("woowoo") || babblings[i].contains("mama")) {
continue;
}
babblings[i] = babblings[i].replace("aya", " ");
babblings[i] = babblings[i].replace("ye", " ");
babblings[i] = babblings[i].replace("woo", " ");
babblings[i] = babblings[i].replace("ma", " ");
babblings[i] = babblings[i].replace(" ", "");
if(babblings[i].length() == 0) answer++;
}
return answer;
}
}
String의 replace() 메소드를 이용한 풀이이다.
정석적으로 푸는 것도 분명 의미가 있지만, 다른 풀이처럼, 허용되는 문자들을 같은 문자로 치환하여 확인하는 것도 재밌고 좋은 풀이인 것 같다. 다음에 비슷한 문제를 만난다면 이렇게 풀어보는 것도 좋을 듯 하다.
소요시간 : 40분