처음엔 아주아주 쉬운 문제라고 생각했다.
아니었다...정답률이 31% 괴물 문제다..
String[] baby = {"aya", "ye", "ma", "woo"};
String[] babbling = {"ayaye", "uuuma", "yee", "yweoo"};
baby
는 아기가 옹알이를 할 수 있는 문자열이다.
babbling
문자열에 baby
에 있는 문자열만으로 이루어져야 한다.
보고 contains()
를 쓰면 된다고 아주 쉽게 생각했다.
하지만 contains()
는 포함만 되면 된다.
ayay
도 aya
가 포함되기 때문에 카운트가 될 것이다.
하지만 그것이 아닌 {"aya", "ye", "ma", "woo"}
으로만 이루어져야한다.
- ayaye (O)
- ayayee (X)
도저히 아무생각이 나지 않았다..
유레카.
고민하다가 방법이 떠올랐다.
replace()
를 사용해서 babbling
에서 baby
문자열을 빼주는 것이다.
babbling[i] = babbling[i].replace(baby[j], "");
하지만 틀렸다.
디버깅을 해보았더니
만약 babbling
에 wyeoo
가 있다면
먼저 wyeoo
에서 ye
를 빼고 남은 woo
도 같이 빼준다는 것을 알게 됐다...
출제자의 의도를 파악해버렸다. 이렇게 문제를 해결할 줄 알고, 먼저 입출력예시를 준 것이다.
그냥 ""
로 제거가 아니라 #
이런 문자를 넣어주면 w#oo가 되기 때문에 삭제할 수 없다.
#
을 넣고 replace()
를 해서 해결할 수 있었다.