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



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

듭니다.

만약 “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));
  1. 문자형 숫자를 숫자로 추출해서 숫자로 변경해주어야 한다
  2. isNaN(x) 메소드는 x 숫자냐 아니냐를 확인하는 메소드. 숫자이면 true, 숫자가 아니면 false
  3. if(!isNaN(x)) answer+=x; => x가 숫자이면 answer를 누적한다. 0208으로 나온다
  4. 문자형 숫자를 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));
  1. 어쨌든 parseInt를 쓰지 않는다하더라도 결국에는 문자를 숫자로 변경해 주어야 하기 때문에 메소드는 사용하긴 해야하겠지만 parseInt대신에 Number를 사용한다
  2. answer*10 + Number(x) 의 원리
    1. 0 * 0 + 0 = 0 : 맨 앞에 나오는 0들은 아무리 많아도 의미 없음
    2. 0 * 10 + 2 = 2 : answer이 0이라 10곱하고 2더해도 2
    3. 2 * 10 + 0 = 20 : answer가 2고 10곱하고 0더하면 20
    4. 20 * 10 + 8 = 208 : answer가 20이고 10곱하고 8더하면 208

이 원리 진짜 신기하다…ㅇ0ㅇ…..!

자리수에 맞게끔 계산해주는것 같은데 신기신기



inflearn 자바스크립트 알고리즘 강의 내용 =)




© 2018. by sora

Powered by sora