네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.
다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
function solution(s) {
let answer = '',
temp = '',
i = 0;
while (i < s.length) {
temp += s[i];
if (number_array.includes(temp)) {
answer += number_array.indexOf(temp);
temp = '';
} else if (temp.match(/[0-9]/g) !== null) {
answer += temp;
temp = '';
}
i++;
}
return answer;
}
let number_array = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
구할 때 인덱스와 숫자가 있는지 없는지를 생각하여 구했는데, 다른 사람의 풀이를 보다가 아래와 같은 풀이를 발견했다. split과 join을 적절하게 활용하여 간단한 풀이도 가능하다는 것을 배울 수 있게 되었고, 아직 splice split slice와 같은 함수들을 사용하는데 어려움을 겪고 있다는 것도 알게 되었다.
function solution(s) {
let numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
let answer = s;
for (let i = 0; i < numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return answer;
}