본문 바로가기
알고리즘/코딩 테스트 문제

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

by 진진리 2023. 10. 18.
728x90
import java.util.regex.Pattern;

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        String[] words = {"aya", "ye", "woo", "ma"};
        String reg = "[\\-]+";
        
        for(int i=0;i<babbling.length;i++){
            for(int j=0;j<4;j++){
                if(babbling[i].contains(words[j])){
                    if(babbling[i].contains(words[j]+words[j])) break;
                    babbling[i] = babbling[i].replace(words[j], "-");
                    j--;
                }
            }
            if(Pattern.matches(reg, babbling[i])) answer++;
        }   
        
        return answer;
    }
}

처음에는 replace 함수를 이용해 단어와 일치하면 공백으로 만든 후 최종 문자열이 공백이 되는지 확인하였으나

이로 인해 가운데의 단어가 사라지면 양 끝의 문자열의 붙어 새로운 단어가 생기는 문제가 발생하였다.

 

이를 해결하기 위해 일치하는 문자를 공백이 아닌 다른 문자로 바꾼 뒤 최종 문자열에  해당 문자만 존재하는지 확인하는 방식으로 풀고자 했다.

따라서, 저번에 배웠던 정규표현식을 이용해 풀어봤다.

 

처음으로 직접 정규표현식을 사용해본게 신기했고 정규표현식을 사용하니 간편하다는 것을 느꼈다.