Algorithm/JavaScript
[문자열탐색] 숫자만 추출
_sweep
2021. 12. 10. 18:25
자바스크립트 알고리즘 문제풀이 강의를 듣고 정리한 내용입니다.
📋 문제
문자와 숫자가 섞여있는 문자열이 주어지면 그중 숫자만 추출하여 그 순서대로 자연수를 만들어 출력한다.
만약 입력으로 "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을 곱하고 해당 값을 숫자형으로 바꾼 후 더해준다.