코딩 테스트 풀이 🛠

숨어있는 숫자의 덧셈 (2)

엄성준 2023. 2. 14. 00:49

문제 설명

문자열 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()를 통해서 풀고 있습니다. 끝까지 하면 된다고 생각하고 하고 있습니다.