숨어있는숫자(프로그래머스)

수민·2023년 1월 12일
0

문제풀이

목록 보기
1/2

https://school.programmers.co.kr/learn/courses/30/lessons/120851

문제

📑 문제
두 문제 다 주어진 매개변수 my_string에 숨어있는 자연수들의 합을 return 하는 함수를 완성하라는 문제이다. 다만 1과 2의 차이점이 있는데...

📑 문제
두 문제 다 주어진 매개변수 my_string에 숨어있는 자연수들의 합을 return 하는 함수를 완성하라는 문제이다. 다만 1과 2의 차이점이 있는데...

❓고려했던 점

  • isNaN(): 이 함수는 어떤 값이 NaN 값인지 판단하는데, 매개변수가 숫자가 아니면 true, 숫자이면 false를 반환하는 특징이 있다.
  • 첫 번째 문제의 경우 자연수가 한 자리로 제한되어 있었기 때문에 단순하게 해당 요소가 숫자인지 아닌지 구별하고, 그것이 숫자라면 Number()을 이용해 변환한 뒤 모조리 합하는 방법으로 알고리즘을 설계했다.
  • 두 번째 문제의 경우에는 연속된 숫자가 하나의 숫자로 간주되었기 때문에 정규 표현식을 이용했다.


1.첫번째 방법
function Solution(my_string){
  let answer=0;

  my_string.split("").map(el=>!isNaN(el)?answer+=Number(el):0)
  return answer;
}




2.두번쨰 방법
function Solution(my_string){

  // 1. 정규표현식을 사용해서 my_string의 숫자 부분을 발라낸다.
    // my_string이 "aAb1B2cC34oOp" 이라면 nums = [ '1', '2', '34' ]
    const nums = my_string.match(/[0-9]+/g);

    // 2. map()을 이용해서 nums 배열의 요소를 전부 string형태에서 number 형태로 바꾼다.
    // 3. reduce()를 이용하여 배열의 요소를 더하여 반환한다.
    return nums ? nums
                      .map(num => Number(num))
                      .reduce( (a, c) => a + c, 0) 
                : 0;

}

profile
헬창목표

0개의 댓글