관리 메뉴

100세까지 코딩

[프로그래머스] Lv0.옹알이 본문

코딩테스트/자바

[프로그래머스] Lv0.옹알이

100세까지 코딩 2023. 8. 8. 02:20
문제 설명

 

 풀기 전 생각
  • 말할 수 있는 단어를 배열에 넣기
  • babbling을 for문 돌면서 말할 수 있는 단어들이 포함되면 replace로 지우기
class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        String[] say = {"aya", "ye", "woo", "ma"}; // 말할 수 있는 단어들
        
        for (int i = 0; i < babbling.length; i++) { //입력된 단어들 순회
            for (int j = 0; j < say.length; j++) {
                if (babbling[i].contains(say[j])) { // 말할 수 있는 단어들 하나씩 검사
                    babbling[i] = babbling[i].replace(say[j], ""); // 포함되면 공백으로 바꾸기
                }
            }
        }

        for (int i = 0; i < babbling.length; i++) {
            if (babbling[i].equals("")){ // 마지막 남은게 공백이면 말할 수 있는 단어
                answer++;
            }
        }
        return answer;
    }
}
오류 및 개선
  • 첫 번째 입출력 예에서 'wyeoo'를 보면 ye를 공백으로 지워버리면 woo가 되어 말할 수 있는 단어가 된다
  • 그러나, 'wyeoo'는 발음이 불가능한 단어이다. 그러므로 공백이 아닌 다른 단어로 replace 해야 한다
  • 또한, 제일 마지막 for문은 위에 for문과 같기 때문에 한 곳에 넣는 게 깔끔하다
최종
class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        String[] say = {"aya", "ye", "woo", "ma"}; // 말할 수 있는 단어들

        for (int i = 0; i < babbling.length; i++) { //입력된 단어들 순회
            for (int j = 0; j < say.length; j++) {
                if (babbling[i].contains(say[j])) { // 말할 수 있는 단어들 하나씩 검사
                    babbling[i] = babbling[i].replace(say[j], "X"); // 포함되면 X로 바꾸기
                }
            }
            babbling[i] = babbling[i].replaceAll("X",""); // X표시를 공백으로 모두 바꾸기
            if (babbling[i].equals("")){ // 마지막 남은게 공백이면 말할 수 있는 단어
                answer++;
            }
        }
        return answer;
    }
}