[JS알고리즘] 숫자만 추출
in Algorithm
문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만
듭니다.
만약 “tge0a1h205er”에서 숫자만 추출하면 0, 1, 2, 0, 5이고 이것을 자연수를 만들면 1205
이 됩니다.
추출하여 만들어지는 자연수는 100,000,000을 넘지 않습니다.
function solution(str){
let answer="";
for(let x of str){
if(!isNaN(x)) answer+=x;
}
return parseInt(answer);
}
let str="g0en2T0s8eSoft";
console.log(solution(str));
- 문자형 숫자를 숫자로 추출해서 숫자로 변경해주어야 한다
isNaN(x)
메소드는 x 숫자냐 아니냐를 확인하는 메소드. 숫자이면 true, 숫자가 아니면 falseif(!isNaN(x)) answer+=x;
=> x가 숫자이면 answer를 누적한다. 0208으로 나온다- 문자형 숫자를 parseInt한다
메소드를 사용하지 않는 경우(parseInt 쓰지 않는 경우)
function solution(str){
let answer=0;
for(let x of str){
if(!isNaN(x)) answer = answer*10 + Number(x);
}
return answer;
}
let str="g0en2T0s8eSoft";
console.log(solution(str));
- 어쨌든 parseInt를 쓰지 않는다하더라도 결국에는 문자를 숫자로 변경해 주어야 하기 때문에 메소드는 사용하긴 해야하겠지만 parseInt대신에 Number를 사용한다
answer*10 + Number(x)
의 원리- 0 * 0 + 0 = 0 : 맨 앞에 나오는 0들은 아무리 많아도 의미 없음
- 0 * 10 + 2 = 2 : answer이 0이라 10곱하고 2더해도 2
- 2 * 10 + 0 = 20 : answer가 2고 10곱하고 0더하면 20
- 20 * 10 + 8 = 208 : answer가 20이고 10곱하고 8더하면 208
이 원리 진짜 신기하다…ㅇ0ㅇ…..!
자리수에 맞게끔 계산해주는것 같은데 신기신기
inflearn 자바스크립트 알고리즘 강의 내용 =)