본문 바로가기

코딩테스트/Programmers

[JAVA] 옹알이(2)

< 풀이 >

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번만 반복되어도 조카가 발음하지 못하는 잘못된 문자열이라는 사실을 깨달았다..! 역시 문제를 풀기 전에 생각을 해보는 시간이 무조건 필요한 것 같다. 다른 사람들의 풀이를 통해 참 많이 배운다 ,, 

 

 

 

 

 

 

 

 

 

참고 블로그


https://velog.io/@subbni/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-Lv.1-%EC%98%B9%EC%95%8C%EC%9D%B42-Java

 

'코딩테스트 > 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