[프로그래머스] 영어가 싫어요

butterbeetle·2023년 1월 27일
0

코딩테스트

목록 보기
32/132
post-thumbnail

문제설명

영어가 싫은 머쓱이는 영어로 표기되어있는 숫자를 수로 바꾸려고 합니다. 문자열 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

내 풀이

function solution(str) {
    const number = [
        "zero",
        "one",
        "two",
        "three",
        "four",
        "five",
        "six",
        "seven",
        "eight",
        "nine"
    ]
    
    for( let i=0; i<10; i++){
        const regex = new RegExp(`${number[i]}`,`g`)
        str = str.replace(regex,i)
    }
    return +str;
}

정규식이랑 replace쓰면 되겠다 생각했는데

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

다른 분의 풀이를 보니 요렇게 더 깔끔하게 하는 방법이 있었다.

profile
멍청이

0개의 댓글