[프로그래머스] 코딩테스트 연습 > 코딩테스트 입문 > 옹알이(1)
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
babbling | result |
---|---|
["aya", "yee", "u", "maa", "wyeoo"] | 1 |
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
babbling 단어에 replaceAll()을 사용하여 발음할 수 있는 단어를 모두 지우자!
모두 지우고도 남아있다면 발음할 수 없는 단어다!
정규식 사용
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for (String bab : babbling) {
bab = bab.replaceAll("aya|ye|woo|ma", "");
if (bab.equals(""))
answer++;
}
return answer;
}
}
정규식 미사용
class Solution {
public int solution(String[] babbling) {
int answer = 0;
String[] words = { "aya", "ye", "woo", "ma" };
for (String bab : babbling) {
for (String word : words) {
bab = bab.replace(word, "-");
}
boolean check = true;
for(int i=0; i<bab.length(); i++) {
if(bab.charAt(i)!='-') {
check = false;
break;
}
}
if(check)
answer++;
}
return answer;
}
}
정규식을 사용하지 않으면
발음할 수 있는 단어를 한 번에 지울 수 없다.
replace()를 사용하면 발음할 수 있는 단어를 하나하나씩 지우게 되는데
이러한 방식을 사용하면 중간 단계에서 발음할 수 있는 단어가 생길 수 있다.
그래서 단어를 지우는 게 아니라
단어를 다른 기호로 대체하는 방식으로 해결할 수 있다.
만약에 발음할 수 있는 단어가 엄청 많거나, 애초에 배열로 주어지면
정규식을 사용하지 않는 방법으로 풀어야 할 듯 싶다.
정규식을 알아두면
꽤 유용하게 써먹을 때가 많다.