본문 바로가기
🍎 Swift/Programmers

[👾 Programmers] 13. 자릿수 더하기

by 솔비님 2024. 6. 18.

1. 문제 설명 (📎Link)

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요. 

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

 

2. 제한사항

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


📝 문제

import Foundation

func solution(_ n:Int) -> Int
{
    var answer:Int = 0

    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    print("Hello Swift")
    
    return answer
}

 

 

💻 내가 푼 방법(테스트 통과)

func solution(_ n:Int) -> Int
{
    //Int 타입의 'n' 을 받아 String으로 변환
    //String으로 변환하는 이유는 받은 정수의 각 문자를 개별적인 정수로 구분하기 위함
    //ex. "123" -> "1", "2", "3" (아래 코드에서 실행될 예정)
    var str = String(n)
    
    //map함수를 문자열에 사용하면, char 타입으로 들어가게됨
    //str에 map함수를 사용하여 다시 Int타입으로 형변환 후 배열을 만들어줌
    //ex. "123" -> "1", "2", "3" -> [1, 2, 3]
    var arr = str.map{Int(String($0))!}
    
    //arr에 담긴 배열을 reduce함수를 통해 더해줌
    //arr.reduce(0, +) -> 모든 숫자를 0부터 시작해서 더 한다는 의미
    return arr.reduce(0, +)
}

 


🔎 의문점과 공부한 것

1. 고차함수를 이용해서 처음 코드를 풀어봤는데 깔끔하고 훨씬 직관적이라 좋은 것 같다

2. 아래처럼 더 깔끌하게 줄일 수 있다

import Foundation

func solution(_ n:Int) -> Int
{
    return String(n).reduce(0, {$0 + Int(String($1))!})
}