알고리즘 문제 연습

[프로그래머스] 옹알이(2)

codi-3 2024. 9. 3. 21:05

🔍문제


📊분석

  • 연속으로 반복되는 발음은 할 수 없다
  • 발음할 수 있는 외의 단어는 말할 수 없다.

✏️ 풀이

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        for(String target:babbling){
            if(target.contains("ayaaya")
              ||target.contains("yeye")
              ||target.contains("woowoo")
              ||target.contains("mama")){
                continue;
            }
            target = target.replace("aya", "");
            target = target.replace("ye", "");
            target = target.replace("woo", "");
            target = target.replace("ma", "");

            if(target.isEmpty()){
                answer+=1;
            }
        }
    
        return answer;
    }
}

✏️ 수정된 풀이

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        for(String target:babbling){
            if(target.contains("ayaaya")
              ||target.contains("yeye")
              ||target.contains("woowoo")
              ||target.contains("mama")){
                continue;
            }
            target = target.replace("aya", " ");
            target = target.replace("ye", " ");
            target = target.replace("woo", " ");
            target = target.replace("ma", " ");
            target = target.replace(" ", "");

            if(target.isEmpty()){
                answer+=1;
            }
        }
    
        return answer;
    }
}

처음 풀이에서 replace("aya", "") 왕같이 공백 없이 완전히제거를 하였는데 몇몇 테스트케이스에서 연속해서 틀리는 형상이 반복되었다. 알고보니 "yayae" 와 같은 단어가 들어올경우 완전제거를 할시 aya 가 제거된뒤  발음할수있는 구문인 "ye" 가남게되어 사실상 발음 할수없는 단어이지만 발음이 가능하다고 인식이 되고있던것이였다. 그래서 먼저 완전 제거가 아닌 공백으로 replace를 해준뒤 공백들을 완전 제거해 주는 쪽으로 변경하니 모든 테스트 케이스를 통과할 수 있었다.