728x90
https://programmers.co.kr/learn/courses/30/lessons/12947
level1 수, 구현
하나의 양의 정수 x를 받아서 각 자리수를 더한 값으로 x가 나누어떨어지면 true 아니면 false를 반환하는 문제
접근방법
C++로 풀이했을 때는 정수의 자리수를 나누는 방식으로 구현했다. (훨씬 빠름) (solution2)
Swift로는 고차함수를 또 사용하고 싶어서, reduce로 풀려고 x : Int -> String -> Array<Character>로 변환해서 풀었다. (solution1)
소스코드
import Foundation
func solution1(_ x:Int) -> Bool {
let sum = Array(String(x)).reduce(0) { $0 + ($1.wholeNumberValue ?? 0) }
return x % sum == 0
}
func solution2(_ x:Int) -> Bool {
var varX: Int = x
var sum: Int = 0
while varX > 0 {
sum += varX % 10
varX /= 10
}
return x % sum == 0
}
728x90
'알고리즘 문제풀이' 카테고리의 다른 글
[프로그래머스] 타겟 넘버 (C++) (0) | 2022.02.22 |
---|---|
[프로그래머스] 로또의 최고순위와 최저순위 (Swift) (스터디) (0) | 2022.02.19 |
[프로그래머스] #138 문자열 내 마음대로 정렬하기 (Swift) (0) | 2022.02.18 |
[프로그래머스] #137 소수 만들기 (Swift) (0) | 2022.02.16 |
[프로그래머스] #136 로또의 최고순위와 최저순위 (Swift) (0) | 2022.02.16 |