티스토리 뷰

문제 설명

 

 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다.  조카는 아직 ["aya", "ye", "woo", "ma"] 네 가지 발음을 최대 한 번씩 사용해 조합한 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때,  머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ babbling의 길이 ≤ 100
  • 1 ≤ babbling[i]의 길이 ≤ 15
  • babbling의 원소는 "aya", "ye", "woo", "ma" 를 각각 최대 한 번씩만 포함합니다.
  • 문자열은 알파벳 소문자로만 이루어져 있습니다.

 

입출력 예

babbling                                                                                                                                                       result

["aya", "yee", "u", "maa", "wyeoo"] 1
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] 3

 

 

접근법

 

 문제를 보고 처음에 든 생각은 speakingList를 만들어 babbling 배열에 있는 값들에 접근하고 String.replaceAll()을 이용하여 값들을 공백으로 만들어 마지막의 String이 공백이라면 answer의 값을 증가시키겠다 였습니다. 하지만 첫번째 케이스의 "wyeoo"는 "ye"가 공백으로 사라진다면 "woo"가 되기 때문에 이 또한 공백으로 변환되어 "wyeoo"를 통해 answer 값이 증가되어버립니다. 그렇기 때문에 공백이 아니고 나오지 않는 문자 "z"로 변환하였고, 마지막에 "z" 값을 공백으로 바꿨을 때의 값이 공백이라면 answer의 값을 증가시켜 주었습니다.

 

풀이

class Solution {
    public int solution(String[] babbling) {
        String[] speakingList = {"aya", "ye", "woo", "ma"};
        int answer = 0;
        for(int i=0; i< babbling.length; i++){
            String str = babbling[i];
            int[] checkList = new int[speakingList.length];
            for(int j=0; j<speakingList.length; j++){
                String speak = speakingList[j];
                if(str.contains(speak)){
                    str = str.replaceAll(speak, "z");
                    checkList[j] = 1;
                }
            }
            if(str.replaceAll("z","").equals("")){
                answer++;
            }
        }
        return answer;
    }
}

 

감사합니다.

 

 

공지사항
최근에 올라온 글
최근에 달린 댓글
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30