문제
머쓱이의 조카는 문제에서 정의한 4개의 단어만 이어 붙여서 말할 수 있다. 단어들이 주어졌을 때 머쓱이의 조카가 말할 수 있는 단어의 개수를 맞추는 문제이다.
풀이 과정
- babbling에는 보기 단어들이 주어진다. 이 단어들을 순회하면서 머쓱이가 말할 수 있는 단어를 포함하고 있다면 이를 다른 문자로 갈아끼우면서 이어 붙여서 말할 수 있는지 검사해 나간다.
- babbling 반복문 안에 머쓱이가 말할 수 있는 단어들의 반복문이 중첩된 구조이다.
- 여기서 핵심은 이어 붙여서 말하는 것이므로, 빈 문자열로 대체하게 된다면 이상한 경우가 발생한다.
- 예를 들어
wyeoo
의 경우,ye
가 지워진woo
가 되고 또woo
가 지워저 결국 최종적으로 빈 문자열이 남아서. 머쓱이 조카가 말할 수 있는 단어로 이루어진 문자가 되어 answer에 카운팅되게 된다. 제한조건은 단어를 이어 붙여서 말하는 것이므로woo
사이에ye
가 끼워진wyeoo
는 정답에 포함되어서는 안된다. 이를 바로잡기 위해서는 빈 문자가 아니라 다른 문자로 바꿔야 한다. 만약 언더바로 바꾼다고 하면wyeoo
->w_oo
이렇게 되어woo
가 포함되는 것을 막을 수 있다.
- 예를 들어
- 말할 수 있는 단어가 포함되어 있다면 해당 단어를
_
로 바꾸어 나가다가 모든 반복문이 종료되었을 때 남게되는 최종 문자열이 모두_
로 이루어져 있다면 이는 정답에 포함시킨다.
풀이 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function solution(babbling) {
let answer = 0;
const speek = ['aya', 'ye', 'woo', 'ma']
for(let babble of babbling) {
for (let word of speek) {
babble = babble.replace(word, '_')
if ('_'.repeat(babble.length) === babble) { // babble이 '_'으로만 이루어져 있는지 검사하는 조건
answer++
break
}
}
}
return answer;
}
정리
- String.prototype.replace, String.prototype.repeat 등과 같은 문자열 메소드에 대해서 문서를 다시 읽어보며 정리하게 되었다. 자바스크립트로 풀어본 첫 문제였다. 호호. 자바스크립트 배열, 문자열 메소드를 많이 알고 있어야 되겠다.