본문 바로가기

카테고리 없음

[프로그래머스] Lv1. 숫자 문자열과 영단어 (javascript)

입력된 문자열로부터 원래 숫자 찾기 게임

규칙

숫자 영단어
0 zero
1 one
2 two
3 three
4 four
5 five
6 six
7 seven
8 eight
9 nine

제한사항

  • 1 ≤ s의 길이 ≤ 50
  • s가 "zero" 또는 "0"으로 시작하는 경우는 주어지지 않습니다.
  • return 값이 1 이상 2,000,000,000 이하의 정수가 되는 올바른 입력만 s로 주어집니다.

나의 풀이

  • 주어진 숫자별 영단어 배열을 상수(numbers)로 저장
  • 주어진 문자열(s)를 한자리씩 파싱(sn)하여 순환 
    •  sn이 숫자형이 아니면
      • tmpStr에 추가
      • numbers에서 tmpStr과 일치하는 배열 인덱스 찾기(findNum)
      • findNum이 있으면
        • 숫자형 결과(answer)에 추가
      • findNum에 없으면
        • 다음 순환 시작
    • sn이 숫자형이면,
      • 숫자형 결과(answer)에 추가
const numbers = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];

function solution(s) {
    
    var answer = '';
    var tmpStr = '';
    
    [...s].forEach( sn => {
        if (isNaN(sn)) {
            tmpStr += sn;
            
            var findNum = numbers.findIndex( n => n === tmpStr);
            if (findNum > -1) {
                answer += findNum;
                tmpStr = ''
            }
            
        } else {
            answer += sn;
        }
    });
    
    return +answer;
}

결과