far

[JS 알고리즘] 숫자만 추출 본문

알고리즘/알고리즘 베이스

[JS 알고리즘] 숫자만 추출

Eater 2023. 3. 25. 02:06

 

숫자만 추출

문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만 듭니다. 만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205이 됩니다.

추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.

 

입력설명
첫 줄에 숫자가 썩인 문자열이 주어집니다. 문자열의 길이는 50을 넘지 않습니다.


출력설명
첫 줄에 자연수를 출력합니다.


입력예제
g0en2T0s8eSoft


출력예제
208

 

// 나의 풀이

function solution(str){
    // parseInt가 앞자리 0을 잘라버림
    let answer = str.replace(/[^0-9]/g, '');
    return parseInt(answer, 10);
}

let str="g0en2T0s8eSoft";
console.log(solution(str));

정규표현식을 사용해 숫자만 추출했다.

이번 문제를 통해 parseInt를 사용하면 맨 앞자리 0을 잘라버린다는 사실을 처음 알았다.

// 강의의 풀이

function solution(str){
    let answer="";
    for(let x of str){
        if(!isNaN(x)) answer+=x;  isNaN(x)숫자냐 아니냐
    }  
    return parseInt(answer);
}

강의에서는 isNaN을 사용해 문제를 풀었다. 아무래도 정규표현식을 사용하면 백트래킹 때문에 알고리즘의 속도가 느려지니까 그런가보다.

 

isNaN에 대해서

https://wonderfulwonder.tistory.com/30

Comments