[코틀린, kotlin / 프로그래머스] 숨어있는 숫자의 덧셈 (2)

1. 문제 출처


2. 문제 설명 

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

3. 제한사항 

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

4. 입출력 예

my_string

result

"aAb1B2cC34oOp"

37

"1a2b3c4d123Z"

133


5. 풀이

class Solution {
    fun solution(my_string: String): Int {
        var answer: Int = 0
        var regex=Regex("\\d+") //연속된 숫자를 나타내기 위한 정규표현식
        var parts=regex.findAll(my_string) //정규표현식의 모든 문자열을 찾아 리스트로 반환
        
        for(part in parts){
            answer+=part.value.toInt() //parts의 각요소를 형변환하여 모두 더한다.
        }
        
        return answer
    }
}
정규표현식 \\d+를 활용해 연속된 숫자를 나타내었다. 그리고 정규표현식 함수 findAll()을 활용해 모든 문자열을 찾아 parts에 저장하였다. 그리고 parts의 각요소를 Int형으로 형변환하여 모두 더하는 식으로 구현하였다.