티스토리 뷰

function solution(s) {
    let answer = 0;

    s = s.replace(/zero/gi, 0);
    s = s.replace(/one/gi, 1);
    s = s.replace(/two/gi, 2);
    s = s.replace(/three/gi, 3);
    s = s.replace(/four/gi, 4);
    s = s.replace(/five/gi, 5);
    s = s.replace(/six/gi, 6);
    s = s.replace(/seven/gi, 7);
    s = s.replace(/eight/gi, 8);
    s = s.replace(/nine/gi, 9);

    answer = Number(s);
    return answer;
}

 

문자열에 있는 숫자 텍스트들을 숫자로 변환해주는 문제.

정규식을 이용해 replace로 문자열을 변환해주었다.

하지만 replace를 반복적으로 써줘야 하다보니 비효율적이라는 생각이 들어

어떻게든 반복문으로 써보고 싶었으나... 실패

 

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

프로그래머스에서 본 깔끔한 풀이

 

numbers 배열의 각 인덱스에 해당하는 텍스트로 split 하고

다시 join으로 연결해서 하나의 문자열로 만들어주고 그걸 숫자로 리턴하는 방식

 

split() - 문자열을 구분자로 나누어서 배열로 반환.
join() - 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
728x90
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크