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 라이센스를 따릅니다.