기초다지기/JS 코딩테스트
javaScript 숫자단어 문자열을 숫자로 변경하기
김빵그
2023. 11. 15. 14:32
문제
문자열 일부를 숫자로 리턴하여라
나의 풀이
function solution(s) {
const numberToWord = {
0: 'zero', 1: 'one', 2: 'two', 3: 'three', 4: 'four',
5: 'five', 6: 'six', 7: 'seven', 8: 'eight', 9: 'nine'
};
let word = '';
let number = '';
for (let char of s) {
if (isNaN(char)) {
word += char;
if (Object.values(numberToWord).includes(word)) {
number += Object.keys(numberToWord).find(key => numberToWord[key] === word);
word = '';
}
} else {
number += char;
}
}
return Number(number);
}
- numberToWord 객체를 통해 숫자와 영단어 매핑
- 반복문 for..of
- isNaN 현재 문자가 숫자인지 체크하고 그에 따라 word number에 문자를 추가한다
- numberToWord 객체에 속한 영어단어가 현재 word에 포함되어있는지 확인후 들어 있다면 현재까지 word에 해당하는 숫자를 찾아 number에 추가한다
다른 풀이
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
var answer = s;
for(let i=0; i< numbers.length; i++) {
let arr = answer.split(numbers[i]);
answer = arr.join(i);
}
return Number(answer);
}
- 답변 보자마자 좀 띵했다.. 왜 생각을 못했을까
- for 반복문
- s 문자는 split 함수와 join 함수를 사용하여 문자열을 분리하고 결합한다
function solution(s) {
let numbers = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
for (let i = 0; i < numbers.length; i++) {
let regex = new RegExp(numbers[i], 'g');
s = s.replace(regex, i);
}
return Number(s);
}
- 정규식 표현을 사용하여 문자열을 index 숫자로 변경한다