다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
-1478 → "one4seveneight"
-234567 → "23four5six7"
-10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.
참고로 각 숫자에 대응되는 영단어는 다음 표와 같습니다.입출력 예
function solution(s) {
var number = ['zero','one','two','three','four','five','six','seven','eight','nine'];
var answer = []; //정답을 넣을 배열
for(var i=0; i<s.length; i++){
if(0 <= +s[i]){ // 문자열 s의 i번째 문자를 +를 이용하여 숫자로 바꿨을 때
//숫자인것은 answer에 push한다. 문자에 + 연산을 해주는 경우엔 NaN이 출력되므로
// 어떤 값과 비교해도 false가 나온다.
answer.push(+s[i]);
}
else{ // 문자인 경우 numbers 배열을 순차적으로 순회하여
for(var j=0; j<number.length; j++){
if(s.indexOf(number[j],i) === i ){ // 중복을 방지하기 위해 i번째 인덱스부터 해당 문자가 있는지 탐색한다.
answer.push(j);
i += (number[j].length-1);
break;
}
}
}
}
return +answer.join(''); // 정답배열을 join메소드를 이용해 묶어 문자열로 반환후 +연산을 이용해 number형으로 리턴한다.
}