영어가 싫어요

문제 설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 numbers가 매개변수로 주어질 때, numbers를 정수로 바꿔 return 하도록 solution 함수를 완성해 주세요.


제한사항

  • numbers는 소문자로만 구성되어 있습니다.

  • numbers는 "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine" 들이 공백 없이 조합되어 있습니다.

  • 1 ≤ numbers의 길이 ≤ 50

  • "zero"는 numbers의 맨 앞에 올 수 없습니다.


입출력 예

numbersresult

"onetwothreefourfivesixseveneightnine"

123456789

"onefourzerosixseven"

14067


입출력 예 설명

입출력 예 #1

  • "onetwothreefourfivesixseveneightnine"를 숫자로 바꾼 123456789를 return합니다.

입출력 예 #1

  • "onefourzerosixseven"를 숫자로 바꾼 14067를 return합니다.

코드

function solution(numbers) {
    let strings = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
    for(let i = 0; i < numbers.length; i++) {
        strings.forEach((str,n) => numbers = numbers.replace(str, n))
    }
    return Number(numbers);
}

다른 풀이

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);
}

replace만 쓰면 하나만 바뀌어서 for문으로 반복을 돌렸는데 그럴 필요 없이 replaceAll을 쓰면 됐다..!

Last updated