[프로그래머스/숫자 문자열과 영단어] JavaScript

윤상일·2022년 7월 17일
0

프로그래머스 Lv.1

목록 보기
13/15
post-thumbnail

문제 설명

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.
-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형으로 리턴한다.
}
profile
멋있는 개발자를 꿈꾸는 코린이

0개의 댓글