[Lv.0] 영어가 싫어요 **

01수정·2022년 11월 18일
0
post-thumbnail
post-custom-banner

<입문 100문제> Day 15 - 문자열, 해시, 배열, 수학

문제


풀이

(1) O : 통과하기는 했으나 뭔가 아쉬운 풀이. replaceAll 은 ECMA-262 (2021) 에 추가된 기능이므로 최신 개발 환경이 아니라면 사용을 권장하지 않는다고 해서 (2) 에서 수정

function solution (numbers) {
    const dic = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    dic.map((num, idx) => numbers = numbers.replaceAll(num, idx))
    return +numbers 
}

(2) replaceAll => split + join

function solution (numbers) {
     const dic = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
    dic.map((num, idx) => numbers = numbers.split(num).join(idx))
    return +numbers 
} 

해답

function solution(numbers) {
  const nums = { zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5, six: 6, seven: 7, eight: 8, nine: 9 };
  const regex = new RegExp(Object.keys(nums).join('|'), 'g');
  return +numbers.replace(regex, key => nums[key]);
}
function solution(numbers) {
    const obj = {
        zero: 0, one: 1, two: 2, three: 3, four: 4,
        five: 5, six: 6, seven: 7, eight: 8, nine: 9
    };

    const num = numbers.replace(/zero|one|two|three|four|five|six|seven|eight|nine/g, (v) => {
        return obj[v];
    });

    return Number(num);
}
function solution(numbers) {
    let numStr = [ "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" ];

    numStr.forEach((str, idx) => {
        numbers = numbers.replaceAll(str, idx);
    });
    return Number(numbers);
}

참고자료

profile
새싹 FE 개발자
post-custom-banner

0개의 댓글