프로그래머스 #JS - 숫자 문자열과 영단어

SSO·2021년 12월 9일
0

프로그래머스Lv1

목록 보기
42/47

문제

풀이

// me
// 정규식
// 처음에 zero 빼먹고, 그다음에 nine 오타...ㅠㅠ

function solution(s) {    
    let answer = '';
    
    const numStrArr = ['zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine'];
    const numStr = {
        zero: '0',
        one: '1',
        two: '2',
        three: '3',
        four: '4',
        five: '5',
        six: '6',
        seven: '7',
        eight: '8',
        nine: '9',
    };
    
    
    // 배열화, 매칭 
    const regex = /zero|one|two|three|four|five|six|seven|eight|nine|[0-9]/g;
    const strArr = s.match(regex);
    console.log(strArr);

    strArr.forEach(str => {
        if(numStrArr.includes(str)){
            answer = answer + numStr[str];
        } else {
            answer = answer + str;
        }
    });

    // 숫자로 변환
    answer = Number(answer);
    return answer;
}
// best
// 사고과정..!
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);
}

// best
function solution(s) {
    s = s.replace(/zero/g, 0)
    .replace(/one/g, 1)
    .replace(/two/g, 2)
    .replace(/three/g, 3)
    .replace(/four/g, 4)
    .replace(/five/g, 5)
    .replace(/six/g, 6)
    .replace(/seven/g, 7)
    .replace(/eight/g, 8)
    .replace(/nine/g, 9)
    return parseInt(s);
}
profile
happy

0개의 댓글