알고리즘 문제풀이
[프로그래머스] #139 하샤드 수 (Swift)
SiO2whocode
2022. 2. 18. 15:35
728x90
https://programmers.co.kr/learn/courses/30/lessons/12947
코딩테스트 연습 - 하샤드 수
양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하
programmers.co.kr
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