| 문제 | 레벨 | 정답률 |
|---|---|---|
| 옹알이(!) | Lv.0 | 34% |
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(String[] babbling) {
int answer = 0;
for(int i =0; i < babbling.length; i++) {
babbling[i] = babbling[i].replace("aya", "1");
babbling[i] = babbling[i].replace("woo", "1");
babbling[i] = babbling[i].replace("ye", "1");
babbling[i] = babbling[i].replace("ma", "1");
babbling[i] = babbling[i].replace("1", "");
if(babbling[i].isEmpty()) {
answer = answer + 1;
}
}
return answer;
}
}
나는 배열의 각 문자열을 앞에서부터 차례대로 비교하여 삭제시키는 방향으로 처음에 생각을 했다.
그런데 그렇게 코드를 짜다보니 중간에 알고리즘이 막혀버리고, 복잡해져서 포기했다.
모범답으로 가져온 코드에서는 나처럼 앞에서부터 차례대로 비교하는 것이 아니라, 순서에 상관없이 비교하고 있다.
그리고 삭제 대신 1로 교체하였다.
접근 방법이 좀 다르긴 하지만, 문자열에서 주어진 문자열과 동일한 것을 찾으면 replace 시켰다는 점은 동일했다.
코드를 작성하다가 너무 복잡하다고 느껴지면, 원점으로 돌아가 좀 더 쉬운 방법이 없는지 노선을 확 틀어서 생각할 필요가 있는 것 같다.
그리고 좀 더 수학적으로 문제를 바라보고 해석해야 할 필요성이 느껴지는 문제였다.