13. 자릿수 더하기

Harold's velog·2024년 1월 25일

CodingTest (Class)

목록 보기
13/52

나의 코드

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를 마스터를 해야겠다는 생각이든다.

import Foundation

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

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

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

var answer : Int = 0

answer = String(N).compactMap{Int(String($0))}.reduce(0, +)
profile
데일리 정리, 하루에 최소 하나의 글은 적도록 하자.

0개의 댓글