본문 바로가기
내일배움캠프/Daily Routine (알고리즘)

[내일배움캠프] 알고리즘 Daily Routine 62. 옹알이(2)

by TIP__ 2024. 11. 11.

안녕하세요.
62회차 과제 옹알이(2)입니다.


문제

머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

제한 사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 30
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

풀이

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        for (String str : babbling) {
            if (str.matches(".*(ayaaya|yeye|woowoo|mama).*")) {
                continue;
            }
            String replacedStr = str.replaceAll("aya|ye|woo|ma", "");
            if (replacedStr.isEmpty()) {
                answer++;
            }
        }
        return answer;
    }
}

Learned

str.matches()
-. str 문자열이 패턴과 일치하는지 확인합니다.
-. 시작위치 .* : 문자열의 앞부분에 임의의 문자가 0개 이상 있을 수 있음을 표현합니다.
-. 끝위치 .* : 문자열의 뒷부분에 임의의 문자가 0개 이상 있을 수 있음을 표현합니다.
-. (ayaaya|yeye|woowoo|mama) : 4개의 문자열 중 하나라도 포함되는지 확인합니다.

str.matches(".(ayaaya|yeye|woowoo|mama).")
-. str문자열에 "ayaaya", "yeye", "woowoo", "mama" 중 하나라도 포함되어있으면 true를 반환하여 연속된 발음이 있음을 확인합니다.


저처럼 개발을 처음 접하시는 분들에게 이 글이 조금이나마 도움이 되길 바랍니다.

댓글