본문 바로가기

주5일알고리즘

Programmers: 숫자 문자열과 영단어 with JS

<내 풀이>

function solution(s) {
    var answer = 0;
    const letter = ['zero', 'one', 'two', 'three', 'four','five','six','seven', 'eight', 'nine','zero']

    String.prototype.replaceAll = function(org,dest) {
        return this.split(org).join(dest);
    }

    for(let i = 0; i<letter.length; i++){
        s = s.replaceAll(letter[i],i);
    }
    return answer = Number(s);
}

 

<가장 많은 좋아요를 받은 풀이>

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

 

replace method는 특정 문자를 한번만 찾아서 바꿔주고 멈추기 때문에 모두 바꿔줄 수 있는 방법이 필요했음.

 

replaceAll이라는 함수가 있는 듯했지만 javascript string에는 내장되어 있지 않음.

 

그래서 replaceAll 함수를 string 내장 함수로 선언하고 사용(이 부분은 search해서 작성)

 

근데 생각해보니 replaceAll 함수를 선언하지 않고,

        s = s.split(letter[i]).join(i)

이렇게 바로 사용하면 되네?

 

split - join 활용도 높아보이니 잘 기억해놔야겠음.