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

한승현·2023년 1월 4일
0

programmers

목록 보기
9/22
  • https://school.programmers.co.kr/learn/courses/30/lessons/133499

  • 문제

    • 아기는 "aya", "ye", "woo", "ma" 만을 발음할 수 있다.
    • 주어진 4개의 발음을 조합해 발음할 수 있다.
      • "aya"+"ye" = "ayaye", "woo"+"ma" = "wooma"
    • 연속해서 같은 발음을 하지 못한다.
    • 문자열이 주어질 때 조카가 발음가능한 단어의 개수를 반환하시오
  • 제한사항

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

    public class Solution {
        private static String[] validBabblings = {"aya", "ye", "woo", "ma"};
        private boolean checkExceptionBabbling(String babbling) {
            for(int i = 0; i < validBabblings.length; i++) {
                babbling = babbling.replaceAll(validBabblings[i], Integer.toString(i));
            }
            babbling = babbling.replaceAll("\\d", "");
            return babbling.length() == 0;
        }
        private boolean checkDuplicationBabbling(String babbling) {
            int curLength = babbling.length();
            for(int i = 0; i < validBabblings.length; i++) {
                babbling = babbling.replaceAll(validBabblings[i]+validBabblings[i],"");
                if(curLength != babbling.length()) {
                    return false;
                }
            }
            return true;
        }
        public int solution(String[] babbling) {
            int answer = 0;
            for(int i = 0; i < babbling.length; i++) {
                if(!checkExceptionBabbling(babbling[i])) {
                    continue;
                }
                if(!checkDuplicationBabbling(babbling[i])) {
                    continue;
                }
                answer+=1;
            }
            return answer;
        }
    }
    
  • 풀이

    • 문자열을 다루는 문제이다. 정규식을 이용하거나 replace를 이용해 해결해야 한다.
    • Level1문제답지 않게 예외케이스가 있는데, 체크를 하는 과정에서 ""로 없애버리면 "mayaa" 의 경우 "aya"를 ""로 없애면 "ma"가 되고, 이렇게 되면 정상적인 문자열로 확인할 가능성이 있다. 따라서 영어가 아닌 숫자나 특수기호로 변환하고 맨 마지막에 한꺼번에 없애야 한다.
    • 특히 문자열문제에서 repalce로 ""로 간단하게 없애는 경우를 저격한 예외케이스가 적용된 문제이다. 다른 문제에서도 자주 있는 케이스이니 조심해야 한다.
profile
사람을 만족시켜줄 수 있는 개발자

0개의 댓글