본문 바로가기
📖 Coding Test/Programmers LV.0

[프로그래머스 LV.0] 숨어있는 숫자의 덧셈 (1)

by hyebin (Helia) 2022. 12. 30.

숨어있는 숫자의 덧셈

문제 설명

문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return 하도록 solution 함수를 완성해 주세요.

제한 사항

  • 1 ≤ my_string의 길이 ≤ 1,000
  • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어 있습니다.

입출력 예

my_string result
"aAb1B2cC34oOp" 10
"1a2b3c4d123" 16

입출력 예 설명

입출력 예 #1

  • "aAb1B2cC34oOp"안의 한자리 자연수는 1, 2, 3, 4입니다. 따라서 1 + 2 + 3 + 4 = 10을 return 합니다.

입출력 예 #2

  • "1a2b3c4d123Z"안의 한자리 자연수는 1, 2, 3, 4, 1, 2, 3입니다. 따라서 1 + 2 + 3 + 4 + 1 + 2 + 3 = 16을 return 합니다.

 

유의 사항

  • 연속된 숫자도 각각 한 자리 숫자로 취급합니다.

제출

import Foundation

func solution(_ my_string:String) -> Int {
    var answer = 0 
    for s in my_string{
        if s.isNumber{
            answer += Int(String(s))!
        }
    }
    return answer
}
my_string을 하나씩 비교하여 숫자인 경우 Int로 변환하여 누적합을 구한다

다른 풀이

import Foundation

func solution(_ my_string:String) -> Int {
     return my_string.compactMap{Int(String($0))}.reduce(0,+)
}
compactMap 함수를 사용하여 my_string이 숫자인 경우를 배열로 반환한 후, reduce 함수를 사용하여 합을 구한다

 

반응형

댓글