Java/Coding Test

옹알이2 문제 풀이

최고다최코딩 2023. 9. 28. 16:30
728x90

"aya", "ye", "ma", "woo"  발음의 조합밖에 발음하지 못하고 

같은 발음을 연속해서 하지 못할 때 

주어진 문자열 배열에서 발음할 수 있는 가지 수 반환 

 

public int solution(String[] babbling) {

int answer = 0;

String[] can = { "aya", "ye", "woo", "ma" };

for (int i = 0; i < babbling.length; i++) {

if (babbling[i].contains("ayaaya") || babbling[i].contains("yeye") || babbling[i].contains("woowoo")

|| babbling[i].contains("mama")) {

continue;

}

for (int j = 0; j < can.length; j++) {

babbling[i] = babbling[i].replaceAll(can[j], "1");

}

babbling[i] = babbling[i].replaceAll("1", "");

if (babbling[i].equals("")) {

answer++;

}

}

return answer;

}

핵심은 replaceAll 메서드를 사용할 때 가능한 발음을 바로 nullString으로 치환해버리면 

불가능했던 발음이 사이에 가능한 발음이 사라져 붙으면서 가능한 발음으로 바뀌는 경우가 생기기 때문에 

can 발음을 일단 1이나 다른 소문자가 아닌 문자로 바꾸고 마지막에 한번더 nullString으로 바꿔주는 작업을 해야한다.