문풀(1)
문풀(1)
- 각 String을 돈다
- index의 char을 확인한다. 이전 문자와 같은 문자라면 break; (같은 발음이 연속될 수 없으므로)- a/y/u/m 네 문자 중 하나인지 확인하고, 그 외 문자일 시 break;
- 네 문자 중 하나라면, 허용되는 단어인지 확인한다.
- 허용되는 단어와 동일하다면, index와 prev를 처리하여 계속해서 확인한다.
- 각 String이 모두 허용되는 문자들, 규칙들로 이루어져 있다면 (index == String의 길이) answer를 1 늘린다.
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;
}
}
문풀(2)
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() 메소드를 이용한 풀이
- 각 String을 순회한다.
- 만약 연속된 같은 발음이 존재한다면 넘어간다.
- 각 허용되는 문자들을 " "로 바꾼다.
- " "를 ""로 바꾼다
-> 만약 허용되는 문자들로만 이루어져 있다면 String은 ""이 되고, 길이가 0이 된다.
-> String의 길이가 0이라면 answer를 늘린다.