문제 설명
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
class Solution {
public int solution(String[] babbling) {
int answer = 0;
// 유효한 발음 리스트
String[] validSounds = {"aya", "ye", "woo", "ma"};
// 유효한 발음으로만 구성된 문자열인지 확인하는 메서드
for (String babble : babbling) {
if (isValidBabbling(babble, validSounds)) {
answer++;
}
}
return answer;
}
private boolean isValidBabbling(String word, String[] validSounds) {
// 각 발음이 연속해서 나오지 않도록 조정
for (String sound : validSounds) {
word = word.replaceAll(sound + sound, " "); // 연속된 발음을 제거
}
// 남은 문자열이 빈 문자열이면 유효한 발음으로만 구성됨
return isValidAfterReplacement(word, validSounds);
}
private boolean isValidAfterReplacement(String word, String[] validSounds) {
// 모든 가능한 유효 발음으로 문자열을 완성할 수 있는지 확인
while (!word.isEmpty()) {
boolean valid = false;
for (String sound : validSounds) {
if (word.startsWith(sound)) {
word = word.substring(sound.length());
valid = true;
break;
}
}
if (!valid) {
return false;
}
}
return true;
}
}
코드 설명
- solution 메서드:
- babbling 배열의 각 문자열에 대해 유효성을 검사합니다.
- 유효한 발음으로만 구성된 문자열의 개수를 카운트합니다.
- isValidBabbling 메서드:
- 문자열에서 연속된 발음을 제거합니다.
- isValidAfterReplacement 메서드를 호출하여 남은 문자열이 유효한 발음으로만 구성되어 있는지 확인합니다.
- isValidAfterReplacement 메서드:
- 문자열이 유효한 발음으로만 구성되어 있는지 확인합니다.
- 문자열이 빈 문자열이 될 때까지 유효한 발음으로 문자열을 차례로 제거합니다.
설명
- 연속된 발음 제거: word.replaceAll(sound + sound, "")를 통해 연속된 발음을 제거합니다. 이 과정은 연속된 발음을 허용하지 않기 위해 필요합니다.
- 유효성 검사: 남은 문자열이 유효한 발음으로만 구성되어 있는지를 확인합니다.
'(Java)코테연습' 카테고리의 다른 글
체육복 (0) | 2024.08.06 |
---|---|
숫자 짝궁 (0) | 2024.08.05 |
(프그)기사단원의 무기 (0) | 2024.08.01 |
덧칠하기 (0) | 2024.07.31 |
소수 만들기 (0) | 2024.07.30 |