입력된 문자열로부터 원래 숫자 찾기 게임
규칙
숫자 |
영단어 |
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이 있으면
- findNum에 없으면
- sn이 숫자형이면,
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;
}
결과