입문이래서 쉬울줄 알았더니만....생각보다 애를 먹었던 문제이다.
일단 백준이랑 입력 받는 형식이 달라서(백준은 테케 입력 받는걸 만들어야 하는데, 프로그래머스는 함수만 구현하는 방식이라 어떻게 접근해야 할까 좀 헤맸다.) 적응하는게 중요할 것 같다.
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] = 3
["aya", "yee", "u", "maa", "wyeoo"] = 1
처음에는 contains 하고 있을 경우. replace하는 방식을 사용했으나, 이렇게 할 경우 다음의 문제가 존재한다.
wyeoo는 ye를 가지고 있으므로, 우선 이걸 공백으로 바꾼다. -> woo만 남음
woo는 발음할 수 있으므로 공백으로 바꾼다. -> ""
결국 wyeoo도 count 된다는건데,,,
중요한건 w | ye | oo 로 잘리기 때문에, 카운트가 안 되어야 한다는 것이다.
즉, woyeo, wyeoo는 replace만 단순히 사용하면 count될 위험이 있다.
class Solution {
public int solution(String[] babbling) {
int answer = 0;
String[] talk = {"aya", "ye", "woo", "ma"};
for (String st : babbling) {
for (String word : talk) {
st = st.replace(word, "|");
}
st = st.replace("|", ""); //선 없애주기
if(st == ""){
answer++;
}
}
return answer;
}
}