포스트

173. 자릿수 더하기

나의 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import Foundation

func solution(_ n:Int) -> Int{
    
    var answer:Int = 0
    
    var N = 0
    
    
    if n > 0 && n <= 100000000 {
        
        N = n
        
        while  N >= 1 {
            
        answer += N % 10
        
        N = N / 10
        
        }
    }
    
    return answer
}

이렇게 생각한 이유.

처음에 자릿수를 어떻게 해야할까 고민을 하면서 배열을 써볼까 어떻게 할까 이런저런 고민을 많이 했다.

그러다 문득 계속 10을 나누게 되면 그 값의 나머지가 자릿수를 의미한다는것을 깨달았고 10을 계속 나눈 값을 answer 변수에 계속 넣었다. 그러면서 입력값 n을 대체할 또 다른 변수 N을 대입하면서 그 N 값이 소수가 될때 해당 조건을 그만하게 실행하였다.


이거 역시도 reduce로 구한 코드를 보았다.

확실히 reduce를 마스터를 해야겠다는 생각이든다.

다른코드

1
2
3
4
5
6
import Foundation

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

코드가 두개의 방식이 존재하는 것 같다.

고차함수는 감이 오지만 미흡한 부분이 좀 보인다.

다른코드

1
2
3
var answer : Int = 0

answer = String(N).compactMap{Int(String($0))}.reduce(0, +)
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.