본문 바로가기
코딩테스트/프로그래머스

[프로그래머스]Lv1. 옹알이(2). JAVA

by 개발김쿙 2023. 12. 7.

<링크>

https://school.programmers.co.kr/learn/courses/30/lessons/133499

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

<문제 설명>

 

<문제 해석>

1. {"aya", "ye", "woo", "ma"} 만 발음 가능

2. 하나의 단어를 연속해서 발음 못함

 

- babbling 배열 중 "ayaaya", "yeye", "woowoo", "mama" 이 포함되어있지 않아야 한다.

-  "yee" 중  ye를 발음하고 난 후 e는 발음 못 한다. -> yee는 발음X 

- 단어와 정확히 일치해야만 한다.

 

<문제 풀이>

0. answer은 babbling 중 발음 가능한 단어의 개수

1. babbling 배열을 순회하며 먼저 예외처리를 해준다. "ayaaya", "yeye", "woowoo", "mama" 

2. {"aya", "ye", "woo", "ma"} 단어를 찾아 공백으로 처리

3. 길이가 0이 될 경우 모두 발음한 경우이므로 answer++; 

4. answer 을 반환

 

<풀이 코드>

class Solution {
    public int solution(String[] babbling) {
        // 발음 가능 {"aya", "ye", "woo", "ma"} 
        // 연속해서 발음x
        int answer = 0; // babbling 중 발음 가능한 단어 개수
        
        for(int i=0; i<babbling.length; i++){
            // 연속발음될 경우 예외처리 
            if(babbling[i].contains("ayaaya") 
               || babbling[i].contains("yeye") 
               || babbling[i].contains("woowoo")
               || babbling[i].contains("mama")){
                continue;
            }
            
            babbling[i] = babbling[i].replace("aya", " ");
            babbling[i] = babbling[i].replace("ye", " ");
            babbling[i] = babbling[i].replace("woo", " ");
            babbling[i] = babbling[i].replace("ma", " ");
            babbling[i] = babbling[i].replace(" ", "");

            if(babbling[i].length()  == 0) answer++;
        }
        
        return answer;
    }
}

 

처음 풀이할 때는 replace("aya", "") 으로 공백없이 완전제거를 해주니 계속 틀려서 무엇이 문제일까 반례를 생각했는데

"mayaa" 이런 경우 aya를 제거하고 나면 ma만 남아 발음이 가능해서 이 경우를 제외시켜주기 위해

먼저 한칸 띄어주어 단어들을 공백으로 만들게 되었다.