😈 숨어있는 숫자의 덧셈 (2)
📗 문제 설명
문자열 my_string
이 매개변수로 주어집니다. my_string
은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string
안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
👀 제한사항
- 1 ≤
my_string
의 길이 ≤ 1,000 - 1 ≤
my_string
안의 자연수 ≤ 1000 - 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
📃 입출력 예
my_string | result |
---|---|
"aAb1B2cC34oOp" | 37 |
"1a2b3c4d123Z" | 133 |
💬입출력 예 설명
입출력 예 설명 #1
- "aAb1B2cC34oOp"안의 자연수는 1, 2, 34 입니다. 따라서 1 + 2 + 34 = 37 을 return합니다.
입출력 예 설명 #2
- "1a2b3c4d123Z"안의 자연수는 1, 2, 3, 4, 123 입니다. 따라서 1 + 2 + 3 + 4 + 123 = 133 을 return합니다.
💎나의 풀이
문제를 읽고 map을 사용해 Int타입만 우선 걸러주었다.
const solution = my_string => [...my_string].map(v=>+v)
// result
// [object Array] (13)
[NaN,NaN,NaN,1,NaN,2,NaN,NaN,3,4,NaN,NaN,NaN]
// [object Array] (12)
[1,NaN,2,NaN,3,NaN,4,NaN,1,2,3,NaN]
어허... 요구사항은 각각의 숫자가 아니었다.. 1+2+34 = 37이다...
방식을 바꿔보기로 했다. 정규식을 사용하여 숫자만 걸러내보자.
const solution = my_string => my_string.match(/[0-9]+/g)
// result
// [object Array] (3)
["1","2","34"]
// [object Array] (5)
["1","2","3","4","123"]
내가 원하는 값들이 나왔다.
이제 reduce로 더해주면 될 것 같다. 요구 사항중엔 정수가 없을 경우엔 0을 출력해달라 했으니 잊지말자.
const solution = my_string => {
const num = my_string.match(/[0-9]+/g)
return num ? num.reduce((acc,cur) => +acc+(+cur),0) : 0
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 😈] JavaScript 이진수 더하기 (0) | 2023.10.18 |
---|---|
[프로그래머스 😈] JavaScript 한 번만 등장한 문자 (0) | 2023.10.18 |
[프로그래머스 😈] JavaScript k의 개수 (0) | 2023.10.17 |
[프로그래머스 😈] JavaScript 숫자 찾기 (0) | 2023.10.17 |
[프로그래머스 😈] 모스 부호 (1) | 2023.10.17 |