문제
문제 답안
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for(int i = 0; i < babbling.length; i++){
if(babbling[i].contains("aya")){
babbling[i] = babbling[i].replace("aya", " ");
}
if(babbling[i].contains("ye")){
babbling[i] = babbling[i].replace("ye", " ");
}
if(babbling[i].contains("woo")){
babbling[i] = babbling[i].replace("woo", " ");
}
if(babbling[i].contains("ma")){
babbling[i] = babbling[i].replace("ma", " ");
}
}
for(int i = 0; i < babbling.length; i++){
int cnt = 0;
for(int j = 0; j < babbling[i].length(); j++){
if(babbling[i].charAt(j) == ' ')
cnt++;
}
if(cnt == babbling[i].length())
answer++;
}
return answer;
}
}
답안 풀이
처음에는 옹알이 배열을 만들어줬는데 생각해보니까 그럴 필요는 없다는 생각이 들어서 각각 조건문을 만들어줬는데, 또 생각해보면 if문도 필요없다.
처음에는
babbling[i].replace("aya", "");
이렇게 해줬는데 1. babbling[i] = 어쩌구 이런식의 선언 필요
2. ""로 대체해주면 wyeoo 같은 경우에 ye가 ""로 바뀌면서 woo가 돼서 이것도 ""로 대체되버리면서 틀리게 된다.
그래서 " "로 바꿔주고 공백을 세면서 이것의 갯수가 string의 length와 같아지면 answer++
이과정에서 charAt()을 써줬는데
* 주의 할 점!
babbling[i].charAt(j) == " "
이렇게 하면 " "는 string과의 비교여서 오류가 난다
" " : string
' ' : char
equals() : string을 비교할 때 쓴다
참고 할 만한 코드
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for(int i=0; i<babbling.length; i++){
if(babbling[i].matches("^(aya(?!aya)|ye(?!ye)|woo(?!woo)|ma(?!ma))+$")){
answer++;
}
}
return answer;
}
}
matches() : 정규 표현식을 써야하며, 특정 패턴이 포함되는지를 boolean으로
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for(int i =0; i < babbling.length; i++) {
babbling[i] = babbling[i].replace("aya", "1");
babbling[i] = babbling[i].replace("woo", "1");
babbling[i] = babbling[i].replace("ye", "1");
babbling[i] = babbling[i].replace("ma", "1");
babbling[i] = babbling[i].replace("1", "");
if(babbling[i].isEmpty()) {
answer = answer + 1;
}
}
return answer;
}
}