[프로그래머스/js] 숨어있는 숫자의 덧셈 (2)

이다형·2023년 7월 13일
0

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

제한사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • 1 ≤ my_string 안의 자연수 ≤ 1000
  • 연속된 수는 하나의 숫자로 간주합니다.
  • 000123과 같이 0이 선행하는 경우는 없습니다.
  • 문자열에 자연수가 없는 경우 0을 return 해주세요.

나의풀이

function solution(my_string) {
    let number = my_string.match(/\d+/g);  
    // my_string = "aAb1B2cC34oOp"
    // number = [ '1', '2', '34' ]  
    
    return number !== null ? 
        number.reduce((acc, cur) => acc + parseInt(cur), 0) : 0
}

정규 표현식을 사용하여 my_string 문자열을 분리

  • match() : 조건에 맞는 요소들을 배열로 반환
  • /\d+/g : 0-9의 문자열을 전역으로 검색
	my_string = "aAb1B2cC34oOp"
	let number = my_string.match(/\d+/g);
    // number = [ '1', '2', '34' ]  

제한사항에서 문자열에 자연수가 없는경우 0을 반환하라고했다.
자연수가 없으면 number가 null이 반환되었다.

return number !== null ? 
        number.reduce((acc, cur) => acc + parseInt(cur), 0) : 0

삼항 연산자 사용

  • number가 null이 아닐때 :
number.reduce((acc, cur) => acc + parseInt(cur), 0)

0부터 시작하는 누산기 acc에 number 요소 cur들을 차례로 정수형으로 변환( parseInt(cur) )하여 더해준 값을 리턴

  • number 가 null 일때 : 0 리턴

0개의 댓글