< 풀이 >
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for(int i=0;i<babbling.length;i++){
if(babbling[i].contains("ayaaya")||babbling[i].contains("yeye")||
babbling[i].contains("woowoo")||babbling[i].contains("mama"))
continue;
babbling[i]=babbling[i].replace("aya"," ");
babbling[i]=babbling[i].replace("ye"," ");
babbling[i]=babbling[i].replace("woo"," ");
babbling[i]=babbling[i].replace("ma"," ");
babbling[i]=babbling[i].replace(" ","");
if(babbling[i].equals(""))
answer++;
}
return answer;
}
}
✏️ 풀이 방법
1. 반복문을 돌며 aya, ye, woo, ma 가 연속되는 경우가 있으면 다음 반복문으로 넘어가고, 연속되는 경우가 없다면 aya, ye, woo, ma 가 있는 곳을 공백으로 바꿔준다. ( ""가 아닌 " "(공백)으로 바꿔주는 이유 => 옹알이1 참고 )
2. 공백을 제거해준 후, 해당 문자열이 빈 문자열이 된다면 ( 발음할 수 있음) 발음할 수 있는 단어의 개수를 증가시킨다.
✍🏻 느낀점
처음에 위의 방법으로 하지 않고, 연속되는 경우를 판별하기 위해 숫자로 바꿔줬었는데 그렇게 하다보니 문제 풀이가 너무 복잡해져서 다른 사람의 풀이를 통해 해결하였다. 저렇게 풀 생각을 하다니 너무 똑똑한 것 같다. 내 생각으로는 "ayaayaayaaya" 이런식으로 몇 번이고 반복할 수 있기 때문에 저렇게 생각을 못했었는데, 곰곰히 생각해보니 4번 반복이 되든, 5번 반복이 되든 2번만 반복되어도 조카가 발음하지 못하는 잘못된 문자열이라는 사실을 깨달았다..! 역시 문제를 풀기 전에 생각을 해보는 시간이 무조건 필요한 것 같다. 다른 사람들의 풀이를 통해 참 많이 배운다 ,,
참고 블로그
'코딩테스트 > Programmers' 카테고리의 다른 글
[JAVA] 소수 찾기 LV.2 (0) | 2024.05.10 |
---|---|
[JAVA] 할인 행사 (0) | 2024.05.08 |
[JAVA] 옹알이(1) (1) | 2024.05.07 |
[JAVA] 체육복 (0) | 2024.05.07 |
[JAVA] 햄버거 만들기 (0) | 2024.05.07 |