코딩 테스트

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

우루쾅 2024. 2. 14. 22:58
728x90
반응형
SMALL

조카는 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다.

 

조카가 발음할 수 있는 단어의 개수를 return 하시오....

 

먼저 연속해서 발음하는 ayaaya|yeye|woowoo|mama 를 모두 replaceAll 로 제외시켰다

그 다음 2중 for 문을 사용하고 그 안에 while 문을 사용하여 

문자가 맞을 경우 "" 로 변경하고 answer++ 을 했는데 시간초과가 되어버린다!

 

class Solution {
    public int solution(String[] babbling) {
        String tell[] = {"aya", "ye", "woo", "ma"};
        int answer = 0;
        
        for(int i=0; i<babbling.length; i++){
             babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama", "");
        }
        
        for(int i=0; i<babbling.length; i++){
            for(String t : tell){
                // 문자가 맞을 경우 "" 변경
                while(babbling[i].indexOf(t) < 0){
                    babbling[i].replaceFirst(t, "");
                    answer++;
                }
            }
        }
        
        return answer;
    }
}

 

System.out.println 을 마구잡이로 찍어서 확인해보니 세상에

내가 문제를 잘못 읽었다....

 

 "aya", "ye", "woo", "ma" 발음을 조합을 한 단어만 읽을 수 있다는 것!

 

다시 잘 비벼서 문제를 잘 해결했다 ㅎㅎ

 

 

 


정답

class Solution {
    public int solution(String[] babbling) {
        int answer = 0;
        
        for(int i=0; i<babbling.length; i++){
            babbling[i] = babbling[i].replaceAll("ayaaya|yeye|woowoo|mama", " ");
            babbling[i] = babbling[i].replaceAll("aya|ye|woo|ma", "");
            if(babbling[i].equals("")) answer++;
        }
        
        return answer;
    }
}

 

 

출처

프로그래머스 - https://school.programmers.co.kr/learn/courses/30/lessons/133499#qna

728x90
반응형
LIST