Coding Test

[Coding Test] 프로그래머스 0단계 - 옹알이(1)

한비Skyla 2024. 7. 24. 20:59

📚 문제

 

✏️ 메모 1

1. babbling 의 인덱스를 돌면서 나온 단어와 Aya ye woo ma 에 맞는 문자열이 있는지 확인.

2. 있다면 그 단어를 확인하고 카운트 증가. 

>> 까지 했다가 반례 발생.  

✏️  메모 2 (입출력 예시 2 참고.)

- 옹알이 단어의 조합이 있을 수 있음. 

- 옹알이 단어를 모두 확인해야 함.

>> 어떻게?

💡. replace

- 옹알이 단어를 확인했다면 babbling[i]에서 해당 단어를 지워버림. 

- babbling[i] 가 isEmpty()면 카운트 증가. 

>> 이렇게 하면 babbling[i]에 글자가 남아있을 때. 

     옹알이 단어와 비교 했을 때, 지울 수 있는 경우와 지울 수 없는 경우가 있음. 

>> 남아있는 글자를 모두 확인하고, isEmpty()면 카운트 증가 해야 함. 

>> 옹알이 단어와 일치한 게 몇 개든 상관없음.

 

🔎 문제해결

문제해결 시간: 2시간 이상, 레퍼런스 참고.

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        String [] word = {"aya", "ye", "woo", "ma"};
        for(int i = 0; i < babbling.length; i++) {
            for(int j = 0; j < 4; j ++) {
                 if(babbling[i].contains(word[j])) {
                     
                     // 이해를 위해 공백보다 * 표시를 함.
                     // 1. word에 해당하는 문자가 있으면 * 체크. 
                      babbling[i] = babbling[i].replace(word[j], "*");
                     // 2. word 에 해당하는 문자를 다 확인 한 후
                     // 3. 또 한 번 replac를 통해 문자열을 비워서 확인함. 
                     if( babbling[i].replace("*", "").isEmpty()) {
                     // 4. 이 때, 문자열이 비어 있으면 카운트. 
                         answer ++ ;
                     } 
                 }
            }
        } 
        return answer;
    }
}