728x90
아기들이 특정 단어밖에 말할 수 없다는 점을 이용한 문제이다.
개인적으로 다른 사람 풀이 봤을 때, 이걸 정규식으로 푼 걸 보고 놀랬다...
JavaScript
- 함수를 일단 분리했고, 단어마다 check를 하도록 구성했다.
- 일단 말할 수 있는 단어가 나오면 @로 replace를 한 후, 마지막에 @를 빈 문자열로 만들어 애기가 말할 수 있는 단어인지 최종 판단한다.
function solution(babbling) {
let count = 0;
babbling.forEach((word) => {
if (checkWord(word)) {
count += 1;
}
})
return count;
}
// Return Boolean
function checkWord(word) {
const babyWords = ["aya", "ye", "woo", "ma"];
babyWords.forEach((babyWord) => {
word = word.replaceAll(babyWord, '@');
})
word = word.replaceAll('@', '');
if (word.length == 0) {
return true;
}
return false;
}
JAVA
- Set로 먼저 애기가 말할 수 있는 구조를 만든다.
- remain에 애기가 말할 수 있는 단어가 완성되면 prev에 집어놓고 초기화한다.
- remain이 결론적으로 빈 문자열이 되면, 애기가 말할 수 있다고 판단한다.
import java.util.HashSet;
class Solution {
public int solution(String[] babbling) {
int answer = 0;
HashSet<String> set = new HashSet<String>();
set.add("aya");
set.add("ye");
set.add("woo");
set.add("ma");
for (String word :
babbling) {
String prev = "";
String remain = "";
for (int i = 0; i < word.length(); i++) {
remain += word.charAt(i);
if (set.contains(remain)) {
if (remain == prev) break;
prev = remain;
remain = "";
}
}
if (remain.equals("")) answer += 1;
}
return answer;
}
}
300x250
'알고리즘' 카테고리의 다른 글
[프로그래머스] 정렬 (0) | 2023.08.01 |
---|---|
[프로그래머스] Greedy (0) | 2023.07.29 |
[프로그래머스] 최댓값 만들기 (1) (0) | 2023.07.16 |
[프로그래머스] 구슬을 나누는 경우의 수 (0) | 2023.07.11 |
[프로그래머스] 분수의 덧셈 (0) | 2023.03.19 |