머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다.
조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고
연속해서 같은 발음을 하는 것을 어려워합니다.
문자열 배열 babbling이 매개변수로 주어질 때,
머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
먼저 요소 하나하나마다 if 문을 사용해 특정 text 가 포함 되었는지, 중복이 되는지 확인 후
replace 를 사용해 해당 text 를 제거했다.
int answer = 0;
String[] babbling = {
"ayaye", "uuu", "yeye", "yemawoo", "ayaayaa"};
// "aya", "ye", "woo", "ma"
//---------------------------------------------//
for (int i =0 ; i< babbling.length ; i++){
// 발음 가능한 언어를 포함하는지, 같은 발음을 반복하는지 체크후 해당 발음 제거
if (babbling[i].contains("aya")){
if (babbling[i].contains("ayaaya")) continue;
babbling[i]= babbling[i].replace("aya","");
}
if (babbling[i].contains("ye")){
if (babbling[i].contains("yeye")) continue;
babbling[i]= babbling[i].replace("ye","");
}
if (babbling[i].contains("woo")){
if (babbling[i].contains("woowoo")) continue;
babbling[i]= babbling[i].replace("woo","");
}
if (babbling[i].contains("ma")){
if (babbling[i].contains("mama")) continue;
babbling[i]= babbling[i].replace("ma","");
}
// 모든 제거 작업이 끝났을경우 아무 text 가 남지 않는경우에만 1을 추가한다.
answer += babbling[i].equals("") ? 1:0;
}
System.out.println(answer);
}
겉보기에 문제가 없어보여서 임의로 text를 여러가지 넣어보다 실패원인을 찾아냈다.
만약 " y aya e " 라는 요소가 있을경우
aya 가 없어지면 ye 가 남게되서 이것도 정상 text 로 인식되는 문제였다.
어느 부분이 오류를 만드는지 파악이 되어서 쉽게 코드를 수정할 수 있었다.
모든 replace 에 text를 제거하는게 아니고 분리하기위해 스페이스바로 변환 시켰다.
그 후 마지막에 스페이스바를 전부 제거하는 코드를 넣어 오류를 보완하니 성공했다.
if (babbling[i].contains("ma")){
if (babbling[i].contains("mama")) continue;
babbling[i]= babbling[i].replace("ma"," ");
}
// 스페이스 바를 지우는 코드 한줄 추가
babbling[i]= babbling[i].replace(" ","");
answer += babbling[i].equals("") ? 1:0;