본문 바로가기
Algorithm/JavaScript

[문자열탐색] 숫자만 추출

by _sweep 2021. 12. 10.

 

자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.

 

 

 

 

📋 문제

문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만들어 출력한다.

만약 입력으로 "su7bywv1ie3"이 주어진다면 이 문자열에서 숫자는 7, 1, 3이고 이것을 자연수로 만들면 713이 된다.

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

 

 

👉 입력

길이가 50을 넘지 않는 숫자가 섞인 문자열이 주어진다.

 

 

👈 출력

자연수를 출력한다.

 

 

💡 사용된 개념

isNaN()

어떤 값이 NaN인지 판별한다.

인자로 들어온 수가 NaN이라면 true, 아니면 false를 반환한다.

여기서 NaN은 Not A Number로 숫자가 아닌 문자를 나타낸다.

 

 

📝 풀이

 

function solution(str) {
    let answer = str.replace(/[\D]/ig, '');
    return parseInt(answer);
}

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

 

주어진 문자열에서 숫자만 추출하는 것이기 때문에 replace()를 사용하여 숫자가 아닌 문자들을 빈 문자열로 치환하였다.

여기서 \D가 뜻하는 것은 [^0-9]와 같다.

이후 자연수로 출력하기 위해 parseInt()로 형 변환을 한 후 리턴해 주었다.

 

parseInt() 사용 안 함 ver.

function solution(str) {
    let answer = 0;
    for (const a of str) {
        if (!isNaN(a)) answer = answer * 10 + Number(a);
    }
    return answer;
}

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

 

숫자와 문자를 구분하기 위해 isNaN()을 사용하였다.

isNaN(a)의 값이 false라면 answer의 값을 변경해 주었다.

이때, 자리 수가 변하면서 값을 추가해 주기 위해 answer에 10을 곱하고 해당 값을 숫자형으로 바꾼 후 더해준다.

 

 

 

 

 

댓글