푸드 파이트 대회
https://school.programmers.co.kr/learn/courses/30/lessons/133499
📔 문제 설명
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 “aya”, “ye”, “woo”, “ma” 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
💡 입출력 예 ingredient| result
[2, 1, 1, 2, 3, 1, 2, 3, 1] 2 [1, 3, 2, 1, 2, 1, 3, 1, 2] 0
💻내가 작성한 코드
- checkRepeat 함수를 통해서 반복단어인지 확인
- 반복함수가 아니고, 모두 발음할 수 있는 단어면 값 더하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function solution(babbling) {
let answer = 0;
const checkRepeat = (b) => {
let repeatWord = false;
["aya", "ye", "woo", "ma"].forEach((w) => {
if (b.includes(w.repeat(2))) {
repeatWord = true;
return;
}
});
return repeatWord;
};
for (const bab of babbling) {
const isRepeat = checkRepeat(bab);
if (bab.replace(/aya|ye|woo|ma/g, "").length === 0 && !isRepeat) {
answer++;
}
}
return answer;
}
💻다른 사람 풀이
- 정규표현식 풀이
1
2
3
4
5
6
7
8
9
function solution(babbling) {
const regexp1 = /(aya|ye|woo|ma)\1+/;
const regexp2 = /^(aya|ye|woo|ma)+$/;
return babbling.reduce(
(ans, word) => (!regexp1.test(word) && regexp2.test(word) ? ++ans : ans),
0
);
}
/(aya|ye|woo|ma)\1+/;
(aya|ye|woo|ma)
: 지정된 단어 중 하나와 일치하는 캡처 그룹\1+
: 반복되는 단어 확인- 즉, 반복문자열 검사
/^(aya|ye|woo|ma)+$/;
^
: 문자열 시작 인수(aya|ye|woo|ma)
: 지정된 단어 중 하나와 일치하는 캡처 그룹$
: 문자열 끝을 인수- 즉,
(aya|ye|woo|ma)
이 포함되어있는지 확인
This post is licensed under CC BY 4.0 by the author.