[프로그래머스 LV0] 숨어있는 숫자의 덧셈 (2)

jonghwan·2022년 12월 12일
0

프로그래머스

목록 보기
70/71
post-thumbnail

1. 문제 설명

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

2. 문제 분석

my_string 안의 자연수들의 합을 반환해준다.

3. 나의 풀이

import Foundation

func solution(_ my_string:String) -> Int {
  let arr = my_string.components(separatedBy: ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"])
  let result = arr.filter { $0 != "" }.map { Int($0)! }.reduce(0, +) 
  return result
}

참고(문자열 파싱) my_string에 A~Z, a~z까지 제거한 문자열을 배열로 반환한다.

.joined()를 이용해 하나의 문자열로 만들어 주지 않은 이유는 my_string 안에 숫자들이 합쳐지면 안되기 때문이다.

제거한 문자들은 배열 안에 "" 아무것도 없는 상태로 남아서 ""을 제거한 나머지 요소들을 추출해주고 Int로 형 변환시켜준다.

그리고 그 요소들을 더해준 값을 반환해준다.

4. 다른 사람의 풀이

import Foundation

func solution(_ my_string:String) -> Int {
    return my_string.replacingOccurrences(of: "[a-zA-Z]", with: "", options: .regularExpression).split(separator: " ", omittingEmptySubsequences: true).map { Int($0) ?? 0 }.reduce(0, +)
}

replacingOccurrences() 메서드를 활용하여 특정 문자열을 변경한다.

string 안에 들어간 ~을 ~로 바꾸어 새로운 문자열로 반환해 달라라는 의미이다.

정규표현식[A-Za-z]을 활용해 A~Z, a~z까지 " "로 바꾸어 새로운 문자열로 반환해준다.

split() 메서드를 활용해서 " " 기준으로 쪼개주고 omittingEmptySubsequences: true로 설정해 빈 시퀀스를 빼준다.

Int로 형 변환을 시켜주고 더해준 값을 반환해준다.

0개의 댓글