Devlog👩🏻‍💻/Algorithm

[Swift] 프로그래머스 Lv.1 : 자릿수 더하기

yujjne 2024. 2. 13. 19:27

▲문제 link🔗

 

 

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

제한사항

  • N의 범위 : 100,1000,000이하의 자연수

 

입출력 예

N return
123 6
987 24

 

 

입출력 예 설명

입출력 예 #1
문제의 예시와 같습니다.

입출력 예 #2
9 + 8 + 7 = 24이므로 24를 return 하면 됩니다.

 

 

✏️ 풀이

 

1. 정수를 문자열로 변환 : String(n)

func solution(_ n: Int) -> Int {
    var answer:Int = 0
    for i in String(n) {
        answer += Int(String(i))!
    }
    return answer
}
  • n을 문자열로 변환하여 순회
  • 정수로 다시 변환하여 합 누적

 

2. 고차함수 사용

func solution1(_ n: Int) -> Int {
    var answer:Int = 0
    answer = String(n).reduce(0, {$0 + Int(String($1))!})
    // answer = String(n).map{Int(String($0))! }.reduce(0,+)
    return answer
}

 

  • reduce  : 모든 요소 결합하여 단일 값으로 반환
String(n).reduce(0, {$0 + Int(String($1))!})

 

0: 초기값, $0: 누적값, $1: 배열의 각 요소

각 문자를 정수로 변환한 값과 이전까지의 합계를 더한 값 반환

 

  • map  : 각 요소 변환하여 새로운 컬렉션 생성
String(n).map { Int(String($0))! }

$0: 배열의 요소인 문자

문자열의 각 문자를 정수로 변환하여 배열 생성 -> reduce로 배열의 요소 누적하여 합 반환

 

 

아직은 고차함수의 사용이 헷갈려서 자세히 정리해보았다.

자주 사용하면서 익숙해지는 날이 오길!