알고리즘 테스트

숨어있는 숫자의 덧셈

Ella Seon 2022. 12. 3. 01:35

1. 문제

문자열  my_string 이 매개변수로 주어집니다. 
my_string 안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

 

2. 정답

    function solution(my_string) {
      let arr = my_string.split('')
      // console.log(arr)
      let sum = 0;
      arr.forEach((data,i) => {
        if (isNaN(data) === false) {
          // console.log(data)
          sum += Number(data)
        }
      })
      return sum;
    }

    console.log(solution("aAb1B2cC34oOp"))
function solution(my_string) {
    let sum = 0;
    for (const ch of my_string) {
        if (!isNaN(ch)) sum += +ch;
    }
    return sum;
}
function solution(my_string) {
    return my_string
        .match(/[0-9]/g)
        .reduce((a, b) => parseInt(a) + parseInt(b));
}
function solution(my_string) {
    let sum=0;
    for(let i=0;i<my_string.length;i++){
        if(Number.isInteger(parseInt(my_string[i])))sum+=parseInt(my_string[i]);
    }
    return sum;
}

배열만드는 방법

let arr = [...my_string]

Array.from(my_string)

 

 

2-2) 매개변수가 숫자인지 검사하는 isNan()

- 매개변수가 숫자가 아니면 true, 숫자이면 false를 반환함

- 헌데 숫자를 문자열로 감싼것 즉 '1,2,3' 과 같은 것들은 typeof 로 찍으면 문자열이 반환되지만....

isNaN에서는 숫자로 취급해서 false가 나온다...

isNaN(456) = false
isNaN('456') = false
isNaN('가나다') = true
isNaN(4.56) = false
isNaN('4.56') = false
isNaN(4 * 5) = false
isNaN('4 * 5') = true
isNaN('') = false
isNaN(' ') = false
isNaN(true) = false
isNaN(false) = false

 

2-3) 문자열을 숫자로 변환할때 사용하는 Number()

- 오로지 숫자타입의 문자열만 Number 타입으로 변환시킨다.

Number('1') : 1
Number('1st') : NaN
Number('No1') : NaN
Number('No1A') : NaN