프로그래머스 연습문제 옹알이2 [JAVA] - 23년 2월 2일

Denia·2023년 2월 2일
0

코딩테스트 준비

목록 보기
146/201

정답 참고 후 내가 푼 풀이

/*
replace를 사용해서 한개를 지우고 난 경우에
단어들이 합쳐지면서 다시 지울수 있는 단어가 생기는 경우가 있어서 예외처리가 필요함

ex) myea -> 'ye'지움
ma -> 'ma'지움
 */
class Solution {
    String[] babyBabbling = {"aya", "ye", "woo", "ma"};
    String[] noBabbling = {"ayaaya", "yeye", "woowoo", "mama"};

    public int solution(String[] babbling) {
        int answer = 0;


        out:
        for (String str : babbling) {
            String newStr = str;
            int idx = 0;
            for (String babble : babyBabbling) {
                newStr = newStr.replace(babble, "" + idx);
                idx++;
            }

            for (int i = 0; i < newStr.length() - 1; i++) {
                char ch = newStr.charAt(i);
                if (!Character.isDigit(ch) || ch == newStr.charAt(i + 1)) {
                    continue out;
                }
            }

            if (!Character.isDigit(newStr.charAt(newStr.length() - 1))) {
                continue out;
            }

            answer++;
        }
        return answer;
    }
}

다른 사람이 푼 풀이


/*
replace를 사용해서 한개를 지우고 난 경우에
단어들이 합쳐지면서 다시 지울수 있는 단어가 생기는 경우가 있어서 예외처리가 필요함

ex) myea -> 'ye'지움
ma -> 'ma'지움
 */
class Solution {
    String[] babyBabbling = {"aya", "ye", "woo", "ma"};
    String[] noBabbling = {"ayaaya", "yeye", "woowoo", "mama"};

    public int solution(String[] babbling) {
        int answer = 0;

        out:
        for (String str : babbling) {
            String newStr = str;

            for (String s : noBabbling) {
                if (newStr.contains(s)) {
                    continue out;
                }
            }

            for (String s : babyBabbling) {
                newStr = newStr.replace(s, " ");
            }

            if (newStr.trim().length() == 0) {
                answer++;
            }
        }

        return answer;
    }
}

profile
HW -> FW -> Web

0개의 댓글