function solution(s) {
let num = {zero : "0", one: 1, two: 2, three: 3, four: 4, five: 5,
six: 6, seven: 7, eight: 8, nine: 9}
let word = ""
let alpahbet = ""
for(let i = 0; i < s.length; i++) {
if(Number(s[i])) {
word += s[i]
continue;
} else if(String(s[i])) {
alpahbet += s[i]
if(alpahbet === "0") {
word += "0"
alpahbet = ""
}
}
if(num[alpahbet]) {
word += num[alpahbet]
alpahbet = ""
}
}
return Number(word)
}
주어진 문자열은 숫자와 문자로 표현한 숫자가 존재한다.
문자로 이루어진 숫자들은 객체로 형성하여 반복문 순회 과정에 숫자일 경우 그대로 word
변수에 할당 및 문자인 경우 해당 문자는 alpahbet
변수에 할당한다.
만일 문자열이 다 정립될 경우 if(num[alpahber])
객체가 숫자로 받아들어 조건문은 참인 조건으로 해당 객체의 프로퍼티값을 할당한다.
이번 문제에서 가장 큰 관건이 0
인 경우 였다.
0은 if(num[alpahber])
에 false 조건으로 판단되기에 별도로 문자열 "0"
문자열을 선언해주었으며, 1000인 경우 "000" 으로 연속적으로 요소가 쌓이기 때문에 10만 할당되는 문제로 인해 alpahbet = ""
변수를 빈 문자열로 변경해야 한다.
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);
}