문제 설명
문자열 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합니다.
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function solution(my_string) {
var answer = 0;
let num = ''
for(i=0; i<my_string.length; i++){
console.log(isNaN(Number(my_string[i])))
if(!isNaN(Number(my_string[i]))){
num+=my_string[i] //숫자라면
}else{
num+=' '
}
}
console.log(num)
console.log(num.split(' '))
num.split(' ').forEach((num)=>{
answer+=Number(num)
})
return answer;
}
|
cs |
문제를 풀며 느낀 점
- 먼저 num이라는 변수를 선언하였고 그 이후 for문을 통해서 my_string문자열의 길이만큼 for문을 돌면서 문자열의 문자를 하나하나 순회했습니다. 이때 문자를 Number를 통해 명시적 형변환을 시켜주었을 때 isNaN 숫자라면 num의 문자열 형태로 추가하였고, 문자라면 ' '으로 num에 더해주었습니다. 그 후 num.split(' ')을 통해서 객체에 담은 값들을 forEach() 함수를 통해서 하나하나 Number()로 형변환을 해주고 answer에 더한 값을 return 하였습니다.
요새 깨닫는 점은 머리로는 로직을 처음부터 끝까지 설계를 못하는 것 같습니다. 한계를 맞이한 것 같기도 한데 console.log()를 통해서 풀고 있습니다. 끝까지 하면 된다고 생각하고 하고 있습니다.
'코딩 테스트 풀이 🛠' 카테고리의 다른 글
[Leet Code - eazy] 1528. Shuffle String (0) | 2023.02.14 |
---|---|
[Leet Code - eazy] 1389. Create Target Array in the Given Order (0) | 2023.02.14 |
[Leet Code - eazy] 1678. Goal Parser Interpretation (0) | 2023.02.13 |
[프로그래머스] 7의 개수 (0) | 2023.02.12 |
[프로그래머스] 이진수 더하기 (0) | 2023.02.12 |